• Jump To … +
    main.js separate.js single.js web-apg-api.js main.js web-conv-api.js ast.js csv.js dangling-else.js display.js flags.js float.js limits.js main.js multiline-mode.js recursive.js replace.js rules.js split.js testonly.js trace.js udt.js unicode.js web-email.js word-boundaries.js main.js phone-number.js web-main.js web-phone-number.js main.js phone-number.js setup.js translate.js xml.js branch-fail-grammar.js main.js parent-mode-grammar.js setup.js universal-mode-grammar.js colors-app.js colors-callbacks.js colors.js main.js more-app.js more-setup.js more.js ast-callbacks.js bad-input.js basic.js ini-file.js main.js parser-callbacks.js setup.js trace.js anbncn.js and.js c-comment.js compound.js main.js nested.js not.js setup.js boundaries-grammar.js boundaries.js comment-grammar.js comment.js main.js negative-grammar.js negative.js positive-grammar.js positive.js setup.js main.js odata-grammar.js run.js setup.js area-code.js lookaround.js main.js phone-number.js setup.js simple.js all-operators.js default.js fancy-number.js limited-lines.js main.js select-operators.js select-rules.js setup.js main.js minimal.js parent-u.js parent.js phone-number.js setup.js stats.js trace.js universal-u.js universal.js callbacks.js grammar.js main.js parser.js writeHtml.js LICENSE.md README.md index.md
  • odata-grammar.js

  • §

    copyright: Copyright (c) 2024 Lowell D. Thomas, all rights reserved
    license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)

    Generated by apg-js, Version 4.4.0 apg-js

    module.exports = function grammar(){
  • §
    SUMMARY
         rules = 446
          udts = 0
       opcodes = 3299
           ---   ABNF original opcodes
           ALT = 212
           CAT = 528
           REP = 310
           RNM = 1593
           TLS = 554
           TBS = 94
           TRG = 8
           ---   SABNF superset opcodes
           UDT = 0
           AND = 0
           NOT = 0
           BKA = 0
           BKN = 0
           BKR = 0
           ABG = 0
           AEN = 0
    characters = [9 - 255]
    
      /* OBJECT IDENTIFIER (for internal parser use) */
      this.grammarObject = 'grammarObject';
    
      /* RULES */
      this.rules = [];
      this.rules[0] = { name: 'dummyStartRule', lower: 'dummystartrule', index: 0, isBkr: false };
      this.rules[1] = { name: 'odataUri', lower: 'odatauri', index: 1, isBkr: false };
      this.rules[2] = { name: 'serviceRoot', lower: 'serviceroot', index: 2, isBkr: false };
      this.rules[3] = { name: 'odataRelativeUri', lower: 'odatarelativeuri', index: 3, isBkr: false };
      this.rules[4] = { name: 'resourcePath', lower: 'resourcepath', index: 4, isBkr: false };
      this.rules[5] = { name: 'collectionNavigation', lower: 'collectionnavigation', index: 5, isBkr: false };
      this.rules[6] = { name: 'collectionNavPath', lower: 'collectionnavpath', index: 6, isBkr: false };
      this.rules[7] = { name: 'keyPredicate', lower: 'keypredicate', index: 7, isBkr: false };
      this.rules[8] = { name: 'simpleKey', lower: 'simplekey', index: 8, isBkr: false };
      this.rules[9] = { name: 'compoundKey', lower: 'compoundkey', index: 9, isBkr: false };
      this.rules[10] = { name: 'keyValuePair', lower: 'keyvaluepair', index: 10, isBkr: false };
      this.rules[11] = { name: 'keyPropertyValue', lower: 'keypropertyvalue', index: 11, isBkr: false };
      this.rules[12] = { name: 'keyPropertyAlias', lower: 'keypropertyalias', index: 12, isBkr: false };
      this.rules[13] = { name: 'keyPathSegments', lower: 'keypathsegments', index: 13, isBkr: false };
      this.rules[14] = { name: 'keyPathLiteral', lower: 'keypathliteral', index: 14, isBkr: false };
      this.rules[15] = { name: 'singleNavigation', lower: 'singlenavigation', index: 15, isBkr: false };
      this.rules[16] = { name: 'singleNavPath', lower: 'singlenavpath', index: 16, isBkr: false };
      this.rules[17] = { name: 'propertyPath', lower: 'propertypath', index: 17, isBkr: false };
      this.rules[18] = { name: 'collectionPath', lower: 'collectionpath', index: 18, isBkr: false };
      this.rules[19] = { name: 'primitivePath', lower: 'primitivepath', index: 19, isBkr: false };
      this.rules[20] = { name: 'complexColPath', lower: 'complexcolpath', index: 20, isBkr: false };
      this.rules[21] = { name: 'complexPath', lower: 'complexpath', index: 21, isBkr: false };
      this.rules[22] = { name: 'complexNavPath', lower: 'complexnavpath', index: 22, isBkr: false };
      this.rules[23] = { name: 'filterInPath', lower: 'filterinpath', index: 23, isBkr: false };
      this.rules[24] = { name: 'each', lower: 'each', index: 24, isBkr: false };
      this.rules[25] = { name: 'count', lower: 'count', index: 25, isBkr: false };
      this.rules[26] = { name: 'ref', lower: 'ref', index: 26, isBkr: false };
      this.rules[27] = { name: 'value', lower: 'value', index: 27, isBkr: false };
      this.rules[28] = { name: 'querySegment', lower: 'querysegment', index: 28, isBkr: false };
      this.rules[29] = { name: 'ordinalIndex', lower: 'ordinalindex', index: 29, isBkr: false };
      this.rules[30] = { name: 'boundOperation', lower: 'boundoperation', index: 30, isBkr: false };
      this.rules[31] = { name: 'actionImportCall', lower: 'actionimportcall', index: 31, isBkr: false };
      this.rules[32] = { name: 'boundActionCall', lower: 'boundactioncall', index: 32, isBkr: false };
      this.rules[33] = { name: 'boundEntityFunctionCall', lower: 'boundentityfunctioncall', index: 33, isBkr: false };
      this.rules[34] = { name: 'boundEntityColFunctionCall', lower: 'boundentitycolfunctioncall', index: 34, isBkr: false };
      this.rules[35] = { name: 'boundComplexFunctionCall', lower: 'boundcomplexfunctioncall', index: 35, isBkr: false };
      this.rules[36] = { name: 'boundComplexColFunctionCall', lower: 'boundcomplexcolfunctioncall', index: 36, isBkr: false };
      this.rules[37] = { name: 'boundPrimitiveFunctionCall', lower: 'boundprimitivefunctioncall', index: 37, isBkr: false };
      this.rules[38] = { name: 'boundPrimitiveColFunctionCall', lower: 'boundprimitivecolfunctioncall', index: 38, isBkr: false };
      this.rules[39] = { name: 'boundFunctionCallNoParens', lower: 'boundfunctioncallnoparens', index: 39, isBkr: false };
      this.rules[40] = { name: 'entityFunctionImportCall', lower: 'entityfunctionimportcall', index: 40, isBkr: false };
      this.rules[41] = { name: 'entityColFunctionImportCall', lower: 'entitycolfunctionimportcall', index: 41, isBkr: false };
      this.rules[42] = { name: 'complexFunctionImportCall', lower: 'complexfunctionimportcall', index: 42, isBkr: false };
      this.rules[43] = { name: 'complexColFunctionImportCall', lower: 'complexcolfunctionimportcall', index: 43, isBkr: false };
      this.rules[44] = { name: 'primitiveFunctionImportCall', lower: 'primitivefunctionimportcall', index: 44, isBkr: false };
      this.rules[45] = { name: 'primitiveColFunctionImportCall', lower: 'primitivecolfunctionimportcall', index: 45, isBkr: false };
      this.rules[46] = { name: 'functionImportCallNoParens', lower: 'functionimportcallnoparens', index: 46, isBkr: false };
      this.rules[47] = { name: 'functionParameters', lower: 'functionparameters', index: 47, isBkr: false };
      this.rules[48] = { name: 'functionParameter', lower: 'functionparameter', index: 48, isBkr: false };
      this.rules[49] = { name: 'parameterName', lower: 'parametername', index: 49, isBkr: false };
      this.rules[50] = { name: 'parameterAlias', lower: 'parameteralias', index: 50, isBkr: false };
      this.rules[51] = { name: 'crossjoin', lower: 'crossjoin', index: 51, isBkr: false };
      this.rules[52] = { name: 'queryOptions', lower: 'queryoptions', index: 52, isBkr: false };
      this.rules[53] = { name: 'queryOption', lower: 'queryoption', index: 53, isBkr: false };
      this.rules[54] = { name: 'batchOptions', lower: 'batchoptions', index: 54, isBkr: false };
      this.rules[55] = { name: 'batchOption', lower: 'batchoption', index: 55, isBkr: false };
      this.rules[56] = { name: 'metadataOptions', lower: 'metadataoptions', index: 56, isBkr: false };
      this.rules[57] = { name: 'metadataOption', lower: 'metadataoption', index: 57, isBkr: false };
      this.rules[58] = { name: 'entityOptions', lower: 'entityoptions', index: 58, isBkr: false };
      this.rules[59] = { name: 'entityIdOption', lower: 'entityidoption', index: 59, isBkr: false };
      this.rules[60] = { name: 'entityCastOptions', lower: 'entitycastoptions', index: 60, isBkr: false };
      this.rules[61] = { name: 'entityCastOption', lower: 'entitycastoption', index: 61, isBkr: false };
      this.rules[62] = { name: 'id', lower: 'id', index: 62, isBkr: false };
      this.rules[63] = { name: 'systemQueryOption', lower: 'systemqueryoption', index: 63, isBkr: false };
      this.rules[64] = { name: 'compute', lower: 'compute', index: 64, isBkr: false };
      this.rules[65] = { name: 'computeItem', lower: 'computeitem', index: 65, isBkr: false };
      this.rules[66] = { name: 'computedProperty', lower: 'computedproperty', index: 66, isBkr: false };
      this.rules[67] = { name: 'expand', lower: 'expand', index: 67, isBkr: false };
      this.rules[68] = { name: 'expandItem', lower: 'expanditem', index: 68, isBkr: false };
      this.rules[69] = { name: 'expandPath', lower: 'expandpath', index: 69, isBkr: false };
      this.rules[70] = { name: 'expandCountOption', lower: 'expandcountoption', index: 70, isBkr: false };
      this.rules[71] = { name: 'expandRefOption', lower: 'expandrefoption', index: 71, isBkr: false };
      this.rules[72] = { name: 'expandOption', lower: 'expandoption', index: 72, isBkr: false };
      this.rules[73] = { name: 'levels', lower: 'levels', index: 73, isBkr: false };
      this.rules[74] = { name: 'filter', lower: 'filter', index: 74, isBkr: false };
      this.rules[75] = { name: 'orderby', lower: 'orderby', index: 75, isBkr: false };
      this.rules[76] = { name: 'orderbyItem', lower: 'orderbyitem', index: 76, isBkr: false };
      this.rules[77] = { name: 'skip', lower: 'skip', index: 77, isBkr: false };
      this.rules[78] = { name: 'top', lower: 'top', index: 78, isBkr: false };
      this.rules[79] = { name: 'index', lower: 'index', index: 79, isBkr: false };
      this.rules[80] = { name: 'format', lower: 'format', index: 80, isBkr: false };
      this.rules[81] = { name: 'inlinecount', lower: 'inlinecount', index: 81, isBkr: false };
      this.rules[82] = { name: 'schemaversion', lower: 'schemaversion', index: 82, isBkr: false };
      this.rules[83] = { name: 'search', lower: 'search', index: 83, isBkr: false };
      this.rules[84] = { name: 'searchExpr', lower: 'searchexpr', index: 84, isBkr: false };
      this.rules[85] = { name: 'searchParenExpr', lower: 'searchparenexpr', index: 85, isBkr: false };
      this.rules[86] = { name: 'searchNegateExpr', lower: 'searchnegateexpr', index: 86, isBkr: false };
      this.rules[87] = { name: 'searchOrExpr', lower: 'searchorexpr', index: 87, isBkr: false };
      this.rules[88] = { name: 'searchAndExpr', lower: 'searchandexpr', index: 88, isBkr: false };
      this.rules[89] = { name: 'searchPhrase', lower: 'searchphrase', index: 89, isBkr: false };
      this.rules[90] = { name: 'searchWord', lower: 'searchword', index: 90, isBkr: false };
      this.rules[91] = { name: 'searchChar', lower: 'searchchar', index: 91, isBkr: false };
      this.rules[92] = { name: 'searchExpr-incomplete', lower: 'searchexpr-incomplete', index: 92, isBkr: false };
      this.rules[93] = { name: 'select', lower: 'select', index: 93, isBkr: false };
      this.rules[94] = { name: 'selectItem', lower: 'selectitem', index: 94, isBkr: false };
      this.rules[95] = { name: 'selectProperty', lower: 'selectproperty', index: 95, isBkr: false };
      this.rules[96] = { name: 'selectPath', lower: 'selectpath', index: 96, isBkr: false };
      this.rules[97] = { name: 'selectOptionPC', lower: 'selectoptionpc', index: 97, isBkr: false };
      this.rules[98] = { name: 'selectOption', lower: 'selectoption', index: 98, isBkr: false };
      this.rules[99] = { name: 'allOperationsInSchema', lower: 'alloperationsinschema', index: 99, isBkr: false };
      this.rules[100] = { name: 'optionallyQualifiedActionName', lower: 'optionallyqualifiedactionname', index: 100, isBkr: false };
      this.rules[101] = { name: 'optionallyQualifiedFunctionName', lower: 'optionallyqualifiedfunctionname', index: 101, isBkr: false };
      this.rules[102] = { name: 'parameterNames', lower: 'parameternames', index: 102, isBkr: false };
      this.rules[103] = { name: 'deltatoken', lower: 'deltatoken', index: 103, isBkr: false };
      this.rules[104] = { name: 'skiptoken', lower: 'skiptoken', index: 104, isBkr: false };
      this.rules[105] = { name: 'aliasAndValue', lower: 'aliasandvalue', index: 105, isBkr: false };
      this.rules[106] = { name: 'nameAndValue', lower: 'nameandvalue', index: 106, isBkr: false };
      this.rules[107] = { name: 'parameterValue', lower: 'parametervalue', index: 107, isBkr: false };
      this.rules[108] = { name: 'customQueryOption', lower: 'customqueryoption', index: 108, isBkr: false };
      this.rules[109] = { name: 'customName', lower: 'customname', index: 109, isBkr: false };
      this.rules[110] = { name: 'customValue', lower: 'customvalue', index: 110, isBkr: false };
      this.rules[111] = { name: 'complexAnnotationInQuery', lower: 'complexannotationinquery', index: 111, isBkr: false };
      this.rules[112] = { name: 'entityAnnotationInQuery', lower: 'entityannotationinquery', index: 112, isBkr: false };
      this.rules[113] = { name: 'primitiveAnnotationInQuery', lower: 'primitiveannotationinquery', index: 113, isBkr: false };
      this.rules[114] = { name: 'primitiveColAnnotationInQuery', lower: 'primitivecolannotationinquery', index: 114, isBkr: false };
      this.rules[115] = { name: 'context', lower: 'context', index: 115, isBkr: false };
      this.rules[116] = { name: 'contextFragment', lower: 'contextfragment', index: 116, isBkr: false };
      this.rules[117] = { name: 'entitySet', lower: 'entityset', index: 117, isBkr: false };
      this.rules[118] = { name: 'containmentNavigation', lower: 'containmentnavigation', index: 118, isBkr: false };
      this.rules[119] = { name: 'navigation', lower: 'navigation', index: 119, isBkr: false };
      this.rules[120] = { name: 'selectList', lower: 'selectlist', index: 120, isBkr: false };
      this.rules[121] = { name: 'selectListItem', lower: 'selectlistitem', index: 121, isBkr: false };
      this.rules[122] = { name: 'selectListProperty', lower: 'selectlistproperty', index: 122, isBkr: false };
      this.rules[123] = { name: 'contextPropertyPath', lower: 'contextpropertypath', index: 123, isBkr: false };
      this.rules[124] = { name: 'qualifiedActionName', lower: 'qualifiedactionname', index: 124, isBkr: false };
      this.rules[125] = { name: 'qualifiedFunctionName', lower: 'qualifiedfunctionname', index: 125, isBkr: false };
      this.rules[126] = { name: 'complexAnnotationInFragment', lower: 'complexannotationinfragment', index: 126, isBkr: false };
      this.rules[127] = { name: 'entityAnnotationInFragment', lower: 'entityannotationinfragment', index: 127, isBkr: false };
      this.rules[128] = { name: 'commonExpr', lower: 'commonexpr', index: 128, isBkr: false };
      this.rules[129] = { name: 'boolCommonExpr', lower: 'boolcommonexpr', index: 129, isBkr: false };
      this.rules[130] = { name: 'rootExpr', lower: 'rootexpr', index: 130, isBkr: false };
      this.rules[131] = { name: 'firstMemberExpr', lower: 'firstmemberexpr', index: 131, isBkr: false };
      this.rules[132] = { name: 'memberExpr', lower: 'memberexpr', index: 132, isBkr: false };
      this.rules[133] = { name: 'directMemberExpr', lower: 'directmemberexpr', index: 133, isBkr: false };
      this.rules[134] = { name: 'propertyPathExpr', lower: 'propertypathexpr', index: 134, isBkr: false };
      this.rules[135] = { name: 'annotationExpr', lower: 'annotationexpr', index: 135, isBkr: false };
      this.rules[136] = { name: 'annotationInQuery', lower: 'annotationinquery', index: 136, isBkr: false };
      this.rules[137] = { name: 'annotationInFragment', lower: 'annotationinfragment', index: 137, isBkr: false };
      this.rules[138] = { name: 'annotationQualifier', lower: 'annotationqualifier', index: 138, isBkr: false };
      this.rules[139] = { name: 'inscopeVariableExpr', lower: 'inscopevariableexpr', index: 139, isBkr: false };
      this.rules[140] = { name: 'implicitVariableExpr', lower: 'implicitvariableexpr', index: 140, isBkr: false };
      this.rules[141] = { name: 'lambdaVariableExpr', lower: 'lambdavariableexpr', index: 141, isBkr: false };
      this.rules[142] = { name: 'collectionNavigationExpr', lower: 'collectionnavigationexpr', index: 142, isBkr: false };
      this.rules[143] = { name: 'singleNavigationExpr', lower: 'singlenavigationexpr', index: 143, isBkr: false };
      this.rules[144] = { name: 'filterExpr', lower: 'filterexpr', index: 144, isBkr: false };
      this.rules[145] = { name: 'complexColPathExpr', lower: 'complexcolpathexpr', index: 145, isBkr: false };
      this.rules[146] = { name: 'collectionPathExpr', lower: 'collectionpathexpr', index: 146, isBkr: false };
      this.rules[147] = { name: 'complexPathExpr', lower: 'complexpathexpr', index: 147, isBkr: false };
      this.rules[148] = { name: 'primitivePathExpr', lower: 'primitivepathexpr', index: 148, isBkr: false };
      this.rules[149] = { name: 'boundFunctionExpr', lower: 'boundfunctionexpr', index: 149, isBkr: false };
      this.rules[150] = { name: 'functionExpr', lower: 'functionexpr', index: 150, isBkr: false };
      this.rules[151] = { name: 'functionExprParameters', lower: 'functionexprparameters', index: 151, isBkr: false };
      this.rules[152] = { name: 'functionExprParameter', lower: 'functionexprparameter', index: 152, isBkr: false };
      this.rules[153] = { name: 'anyExpr', lower: 'anyexpr', index: 153, isBkr: false };
      this.rules[154] = { name: 'allExpr', lower: 'allexpr', index: 154, isBkr: false };
      this.rules[155] = { name: 'lambdaPredicateExpr', lower: 'lambdapredicateexpr', index: 155, isBkr: false };
      this.rules[156] = { name: 'methodCallExpr', lower: 'methodcallexpr', index: 156, isBkr: false };
      this.rules[157] = { name: 'boolMethodCallExpr', lower: 'boolmethodcallexpr', index: 157, isBkr: false };
      this.rules[158] = { name: 'concatMethodCallExpr', lower: 'concatmethodcallexpr', index: 158, isBkr: false };
      this.rules[159] = { name: 'containsMethodCallExpr', lower: 'containsmethodcallexpr', index: 159, isBkr: false };
      this.rules[160] = { name: 'endsWithMethodCallExpr', lower: 'endswithmethodcallexpr', index: 160, isBkr: false };
      this.rules[161] = { name: 'indexOfMethodCallExpr', lower: 'indexofmethodcallexpr', index: 161, isBkr: false };
      this.rules[162] = { name: 'lengthMethodCallExpr', lower: 'lengthmethodcallexpr', index: 162, isBkr: false };
      this.rules[163] = { name: 'matchesPatternMethodCallExpr', lower: 'matchespatternmethodcallexpr', index: 163, isBkr: false };
      this.rules[164] = { name: 'startsWithMethodCallExpr', lower: 'startswithmethodcallexpr', index: 164, isBkr: false };
      this.rules[165] = { name: 'substringMethodCallExpr', lower: 'substringmethodcallexpr', index: 165, isBkr: false };
      this.rules[166] = { name: 'toLowerMethodCallExpr', lower: 'tolowermethodcallexpr', index: 166, isBkr: false };
      this.rules[167] = { name: 'toUpperMethodCallExpr', lower: 'touppermethodcallexpr', index: 167, isBkr: false };
      this.rules[168] = { name: 'trimMethodCallExpr', lower: 'trimmethodcallexpr', index: 168, isBkr: false };
      this.rules[169] = { name: 'yearMethodCallExpr', lower: 'yearmethodcallexpr', index: 169, isBkr: false };
      this.rules[170] = { name: 'monthMethodCallExpr', lower: 'monthmethodcallexpr', index: 170, isBkr: false };
      this.rules[171] = { name: 'dayMethodCallExpr', lower: 'daymethodcallexpr', index: 171, isBkr: false };
      this.rules[172] = { name: 'hourMethodCallExpr', lower: 'hourmethodcallexpr', index: 172, isBkr: false };
      this.rules[173] = { name: 'minuteMethodCallExpr', lower: 'minutemethodcallexpr', index: 173, isBkr: false };
      this.rules[174] = { name: 'secondMethodCallExpr', lower: 'secondmethodcallexpr', index: 174, isBkr: false };
      this.rules[175] = { name: 'fractionalsecondsMethodCallExpr', lower: 'fractionalsecondsmethodcallexpr', index: 175, isBkr: false };
      this.rules[176] = { name: 'totalsecondsMethodCallExpr', lower: 'totalsecondsmethodcallexpr', index: 176, isBkr: false };
      this.rules[177] = { name: 'dateMethodCallExpr', lower: 'datemethodcallexpr', index: 177, isBkr: false };
      this.rules[178] = { name: 'timeMethodCallExpr', lower: 'timemethodcallexpr', index: 178, isBkr: false };
      this.rules[179] = { name: 'totalOffsetMinutesMethodCallExpr', lower: 'totaloffsetminutesmethodcallexpr', index: 179, isBkr: false };
      this.rules[180] = { name: 'minDateTimeMethodCallExpr', lower: 'mindatetimemethodcallexpr', index: 180, isBkr: false };
      this.rules[181] = { name: 'maxDateTimeMethodCallExpr', lower: 'maxdatetimemethodcallexpr', index: 181, isBkr: false };
      this.rules[182] = { name: 'nowMethodCallExpr', lower: 'nowmethodcallexpr', index: 182, isBkr: false };
      this.rules[183] = { name: 'roundMethodCallExpr', lower: 'roundmethodcallexpr', index: 183, isBkr: false };
      this.rules[184] = { name: 'floorMethodCallExpr', lower: 'floormethodcallexpr', index: 184, isBkr: false };
      this.rules[185] = { name: 'ceilingMethodCallExpr', lower: 'ceilingmethodcallexpr', index: 185, isBkr: false };
      this.rules[186] = { name: 'distanceMethodCallExpr', lower: 'distancemethodcallexpr', index: 186, isBkr: false };
      this.rules[187] = { name: 'geoLengthMethodCallExpr', lower: 'geolengthmethodcallexpr', index: 187, isBkr: false };
      this.rules[188] = { name: 'intersectsMethodCallExpr', lower: 'intersectsmethodcallexpr', index: 188, isBkr: false };
      this.rules[189] = { name: 'hasSubsetMethodCallExpr', lower: 'hassubsetmethodcallexpr', index: 189, isBkr: false };
      this.rules[190] = { name: 'hasSubsequenceMethodCallExpr', lower: 'hassubsequencemethodcallexpr', index: 190, isBkr: false };
      this.rules[191] = { name: 'caseMethodCallExpr', lower: 'casemethodcallexpr', index: 191, isBkr: false };
      this.rules[192] = { name: 'parenExpr', lower: 'parenexpr', index: 192, isBkr: false };
      this.rules[193] = { name: 'listExpr', lower: 'listexpr', index: 193, isBkr: false };
      this.rules[194] = { name: 'andExpr', lower: 'andexpr', index: 194, isBkr: false };
      this.rules[195] = { name: 'orExpr', lower: 'orexpr', index: 195, isBkr: false };
      this.rules[196] = { name: 'eqExpr', lower: 'eqexpr', index: 196, isBkr: false };
      this.rules[197] = { name: 'neExpr', lower: 'neexpr', index: 197, isBkr: false };
      this.rules[198] = { name: 'ltExpr', lower: 'ltexpr', index: 198, isBkr: false };
      this.rules[199] = { name: 'leExpr', lower: 'leexpr', index: 199, isBkr: false };
      this.rules[200] = { name: 'gtExpr', lower: 'gtexpr', index: 200, isBkr: false };
      this.rules[201] = { name: 'geExpr', lower: 'geexpr', index: 201, isBkr: false };
      this.rules[202] = { name: 'inExpr', lower: 'inexpr', index: 202, isBkr: false };
      this.rules[203] = { name: 'hasExpr', lower: 'hasexpr', index: 203, isBkr: false };
      this.rules[204] = { name: 'addExpr', lower: 'addexpr', index: 204, isBkr: false };
      this.rules[205] = { name: 'subExpr', lower: 'subexpr', index: 205, isBkr: false };
      this.rules[206] = { name: 'mulExpr', lower: 'mulexpr', index: 206, isBkr: false };
      this.rules[207] = { name: 'divExpr', lower: 'divexpr', index: 207, isBkr: false };
      this.rules[208] = { name: 'divbyExpr', lower: 'divbyexpr', index: 208, isBkr: false };
      this.rules[209] = { name: 'modExpr', lower: 'modexpr', index: 209, isBkr: false };
      this.rules[210] = { name: 'negateExpr', lower: 'negateexpr', index: 210, isBkr: false };
      this.rules[211] = { name: 'notExpr', lower: 'notexpr', index: 211, isBkr: false };
      this.rules[212] = { name: 'isofExpr', lower: 'isofexpr', index: 212, isBkr: false };
      this.rules[213] = { name: 'castExpr', lower: 'castexpr', index: 213, isBkr: false };
      this.rules[214] = { name: 'arrayOrObject', lower: 'arrayorobject', index: 214, isBkr: false };
      this.rules[215] = { name: 'array', lower: 'array', index: 215, isBkr: false };
      this.rules[216] = { name: 'object', lower: 'object', index: 216, isBkr: false };
      this.rules[217] = { name: 'member', lower: 'member', index: 217, isBkr: false };
      this.rules[218] = { name: 'valueInUrl', lower: 'valueinurl', index: 218, isBkr: false };
      this.rules[219] = { name: 'begin-object', lower: 'begin-object', index: 219, isBkr: false };
      this.rules[220] = { name: 'end-object', lower: 'end-object', index: 220, isBkr: false };
      this.rules[221] = { name: 'begin-array', lower: 'begin-array', index: 221, isBkr: false };
      this.rules[222] = { name: 'end-array', lower: 'end-array', index: 222, isBkr: false };
      this.rules[223] = { name: 'quotation-mark', lower: 'quotation-mark', index: 223, isBkr: false };
      this.rules[224] = { name: 'name-separator', lower: 'name-separator', index: 224, isBkr: false };
      this.rules[225] = { name: 'value-separator', lower: 'value-separator', index: 225, isBkr: false };
      this.rules[226] = { name: 'stringInUrl', lower: 'stringinurl', index: 226, isBkr: false };
      this.rules[227] = { name: 'charInJSON', lower: 'charinjson', index: 227, isBkr: false };
      this.rules[228] = { name: 'qchar-JSON-special', lower: 'qchar-json-special', index: 228, isBkr: false };
      this.rules[229] = { name: 'escape', lower: 'escape', index: 229, isBkr: false };
      this.rules[230] = { name: 'qualifiedTypeName', lower: 'qualifiedtypename', index: 230, isBkr: false };
      this.rules[231] = { name: 'optionallyQualifiedTypeName', lower: 'optionallyqualifiedtypename', index: 231, isBkr: false };
      this.rules[232] = { name: 'singleQualifiedTypeName', lower: 'singlequalifiedtypename', index: 232, isBkr: false };
      this.rules[233] = { name: 'singleTypeName', lower: 'singletypename', index: 233, isBkr: false };
      this.rules[234] = { name: 'qualifiedEntityTypeName', lower: 'qualifiedentitytypename', index: 234, isBkr: false };
      this.rules[235] = { name: 'qualifiedComplexTypeName', lower: 'qualifiedcomplextypename', index: 235, isBkr: false };
      this.rules[236] = { name: 'qualifiedTypeDefinitionName', lower: 'qualifiedtypedefinitionname', index: 236, isBkr: false };
      this.rules[237] = { name: 'qualifiedEnumTypeName', lower: 'qualifiedenumtypename', index: 237, isBkr: false };
      this.rules[238] = { name: 'optionallyQualifiedEntityTypeName', lower: 'optionallyqualifiedentitytypename', index: 238, isBkr: false };
      this.rules[239] = { name: 'optionallyQualifiedComplexTypeName', lower: 'optionallyqualifiedcomplextypename', index: 239, isBkr: false };
      this.rules[240] = { name: 'namespace', lower: 'namespace', index: 240, isBkr: false };
      this.rules[241] = { name: 'namespacePart', lower: 'namespacepart', index: 241, isBkr: false };
      this.rules[242] = { name: 'entitySetName', lower: 'entitysetname', index: 242, isBkr: false };
      this.rules[243] = { name: 'singletonEntity', lower: 'singletonentity', index: 243, isBkr: false };
      this.rules[244] = { name: 'entityTypeName', lower: 'entitytypename', index: 244, isBkr: false };
      this.rules[245] = { name: 'complexTypeName', lower: 'complextypename', index: 245, isBkr: false };
      this.rules[246] = { name: 'typeDefinitionName', lower: 'typedefinitionname', index: 246, isBkr: false };
      this.rules[247] = { name: 'enumerationTypeName', lower: 'enumerationtypename', index: 247, isBkr: false };
      this.rules[248] = { name: 'enumerationMember', lower: 'enumerationmember', index: 248, isBkr: false };
      this.rules[249] = { name: 'termName', lower: 'termname', index: 249, isBkr: false };
      this.rules[250] = { name: 'odataIdentifier', lower: 'odataidentifier', index: 250, isBkr: false };
      this.rules[251] = { name: 'identifierLeadingCharacter', lower: 'identifierleadingcharacter', index: 251, isBkr: false };
      this.rules[252] = { name: 'identifierCharacter', lower: 'identifiercharacter', index: 252, isBkr: false };
      this.rules[253] = { name: 'primitiveTypeName', lower: 'primitivetypename', index: 253, isBkr: false };
      this.rules[254] = { name: 'abstractSpatialTypeName', lower: 'abstractspatialtypename', index: 254, isBkr: false };
      this.rules[255] = { name: 'concreteSpatialTypeName', lower: 'concretespatialtypename', index: 255, isBkr: false };
      this.rules[256] = { name: 'primitiveProperty', lower: 'primitiveproperty', index: 256, isBkr: false };
      this.rules[257] = { name: 'primitiveKeyProperty', lower: 'primitivekeyproperty', index: 257, isBkr: false };
      this.rules[258] = { name: 'primitiveNonKeyProperty', lower: 'primitivenonkeyproperty', index: 258, isBkr: false };
      this.rules[259] = { name: 'primitiveColProperty', lower: 'primitivecolproperty', index: 259, isBkr: false };
      this.rules[260] = { name: 'complexProperty', lower: 'complexproperty', index: 260, isBkr: false };
      this.rules[261] = { name: 'complexColProperty', lower: 'complexcolproperty', index: 261, isBkr: false };
      this.rules[262] = { name: 'streamProperty', lower: 'streamproperty', index: 262, isBkr: false };
      this.rules[263] = { name: 'navigationProperty', lower: 'navigationproperty', index: 263, isBkr: false };
      this.rules[264] = { name: 'entityNavigationProperty', lower: 'entitynavigationproperty', index: 264, isBkr: false };
      this.rules[265] = { name: 'entityColNavigationProperty', lower: 'entitycolnavigationproperty', index: 265, isBkr: false };
      this.rules[266] = { name: 'action', lower: 'action', index: 266, isBkr: false };
      this.rules[267] = { name: 'actionImport', lower: 'actionimport', index: 267, isBkr: false };
      this.rules[268] = { name: 'function', lower: 'function', index: 268, isBkr: false };
      this.rules[269] = { name: 'entityFunction', lower: 'entityfunction', index: 269, isBkr: false };
      this.rules[270] = { name: 'entityColFunction', lower: 'entitycolfunction', index: 270, isBkr: false };
      this.rules[271] = { name: 'complexFunction', lower: 'complexfunction', index: 271, isBkr: false };
      this.rules[272] = { name: 'complexColFunction', lower: 'complexcolfunction', index: 272, isBkr: false };
      this.rules[273] = { name: 'primitiveFunction', lower: 'primitivefunction', index: 273, isBkr: false };
      this.rules[274] = { name: 'primitiveColFunction', lower: 'primitivecolfunction', index: 274, isBkr: false };
      this.rules[275] = { name: 'entityFunctionImport', lower: 'entityfunctionimport', index: 275, isBkr: false };
      this.rules[276] = { name: 'entityColFunctionImport', lower: 'entitycolfunctionimport', index: 276, isBkr: false };
      this.rules[277] = { name: 'complexFunctionImport', lower: 'complexfunctionimport', index: 277, isBkr: false };
      this.rules[278] = { name: 'complexColFunctionImport', lower: 'complexcolfunctionimport', index: 278, isBkr: false };
      this.rules[279] = { name: 'primitiveFunctionImport', lower: 'primitivefunctionimport', index: 279, isBkr: false };
      this.rules[280] = { name: 'primitiveColFunctionImport', lower: 'primitivecolfunctionimport', index: 280, isBkr: false };
      this.rules[281] = { name: 'primitiveLiteral', lower: 'primitiveliteral', index: 281, isBkr: false };
      this.rules[282] = { name: 'primitiveValue', lower: 'primitivevalue', index: 282, isBkr: false };
      this.rules[283] = { name: 'nullValue', lower: 'nullvalue', index: 283, isBkr: false };
      this.rules[284] = { name: 'binary', lower: 'binary', index: 284, isBkr: false };
      this.rules[285] = { name: 'binaryValue', lower: 'binaryvalue', index: 285, isBkr: false };
      this.rules[286] = { name: 'base64b16', lower: 'base64b16', index: 286, isBkr: false };
      this.rules[287] = { name: 'base64b8', lower: 'base64b8', index: 287, isBkr: false };
      this.rules[288] = { name: 'base64char', lower: 'base64char', index: 288, isBkr: false };
      this.rules[289] = { name: 'booleanValue', lower: 'booleanvalue', index: 289, isBkr: false };
      this.rules[290] = { name: 'decimalValue', lower: 'decimalvalue', index: 290, isBkr: false };
      this.rules[291] = { name: 'doubleValue', lower: 'doublevalue', index: 291, isBkr: false };
      this.rules[292] = { name: 'singleValue', lower: 'singlevalue', index: 292, isBkr: false };
      this.rules[293] = { name: 'nanInfinity', lower: 'naninfinity', index: 293, isBkr: false };
      this.rules[294] = { name: 'guidValue', lower: 'guidvalue', index: 294, isBkr: false };
      this.rules[295] = { name: 'byteValue', lower: 'bytevalue', index: 295, isBkr: false };
      this.rules[296] = { name: 'sbyteValue', lower: 'sbytevalue', index: 296, isBkr: false };
      this.rules[297] = { name: 'int16Value', lower: 'int16value', index: 297, isBkr: false };
      this.rules[298] = { name: 'int32Value', lower: 'int32value', index: 298, isBkr: false };
      this.rules[299] = { name: 'int64Value', lower: 'int64value', index: 299, isBkr: false };
      this.rules[300] = { name: 'string', lower: 'string', index: 300, isBkr: false };
      this.rules[301] = { name: 'SQUOTE-in-string', lower: 'squote-in-string', index: 301, isBkr: false };
      this.rules[302] = { name: 'dateValue', lower: 'datevalue', index: 302, isBkr: false };
      this.rules[303] = { name: 'dateTimeOffsetValue', lower: 'datetimeoffsetvalue', index: 303, isBkr: false };
      this.rules[304] = { name: 'dateTimeOffsetValueInUrl', lower: 'datetimeoffsetvalueinurl', index: 304, isBkr: false };
      this.rules[305] = { name: 'duration', lower: 'duration', index: 305, isBkr: false };
      this.rules[306] = { name: 'durationValue', lower: 'durationvalue', index: 306, isBkr: false };
      this.rules[307] = { name: 'timeOfDayValue', lower: 'timeofdayvalue', index: 307, isBkr: false };
      this.rules[308] = { name: 'timeOfDayValueInUrl', lower: 'timeofdayvalueinurl', index: 308, isBkr: false };
      this.rules[309] = { name: 'oneToNine', lower: 'onetonine', index: 309, isBkr: false };
      this.rules[310] = { name: 'zeroToFiftyNine', lower: 'zerotofiftynine', index: 310, isBkr: false };
      this.rules[311] = { name: 'year', lower: 'year', index: 311, isBkr: false };
      this.rules[312] = { name: 'month', lower: 'month', index: 312, isBkr: false };
      this.rules[313] = { name: 'day', lower: 'day', index: 313, isBkr: false };
      this.rules[314] = { name: 'hour', lower: 'hour', index: 314, isBkr: false };
      this.rules[315] = { name: 'minute', lower: 'minute', index: 315, isBkr: false };
      this.rules[316] = { name: 'second', lower: 'second', index: 316, isBkr: false };
      this.rules[317] = { name: 'fractionalSeconds', lower: 'fractionalseconds', index: 317, isBkr: false };
      this.rules[318] = { name: 'enum', lower: 'enum', index: 318, isBkr: false };
      this.rules[319] = { name: 'enumValue', lower: 'enumvalue', index: 319, isBkr: false };
      this.rules[320] = { name: 'singleEnumValue', lower: 'singleenumvalue', index: 320, isBkr: false };
      this.rules[321] = { name: 'enumMemberValue', lower: 'enummembervalue', index: 321, isBkr: false };
      this.rules[322] = { name: 'geographyCollection', lower: 'geographycollection', index: 322, isBkr: false };
      this.rules[323] = { name: 'fullCollectionLiteral', lower: 'fullcollectionliteral', index: 323, isBkr: false };
      this.rules[324] = { name: 'collectionLiteral', lower: 'collectionliteral', index: 324, isBkr: false };
      this.rules[325] = { name: 'geoLiteral', lower: 'geoliteral', index: 325, isBkr: false };
      this.rules[326] = { name: 'geographyLineString', lower: 'geographylinestring', index: 326, isBkr: false };
      this.rules[327] = { name: 'fullLineStringLiteral', lower: 'fulllinestringliteral', index: 327, isBkr: false };
      this.rules[328] = { name: 'lineStringLiteral', lower: 'linestringliteral', index: 328, isBkr: false };
      this.rules[329] = { name: 'lineStringData', lower: 'linestringdata', index: 329, isBkr: false };
      this.rules[330] = { name: 'geographyMultiLineString', lower: 'geographymultilinestring', index: 330, isBkr: false };
      this.rules[331] = { name: 'fullMultiLineStringLiteral', lower: 'fullmultilinestringliteral', index: 331, isBkr: false };
      this.rules[332] = { name: 'multiLineStringLiteral', lower: 'multilinestringliteral', index: 332, isBkr: false };
      this.rules[333] = { name: 'geographyMultiPoint', lower: 'geographymultipoint', index: 333, isBkr: false };
      this.rules[334] = { name: 'fullMultiPointLiteral', lower: 'fullmultipointliteral', index: 334, isBkr: false };
      this.rules[335] = { name: 'multiPointLiteral', lower: 'multipointliteral', index: 335, isBkr: false };
      this.rules[336] = { name: 'geographyMultiPolygon', lower: 'geographymultipolygon', index: 336, isBkr: false };
      this.rules[337] = { name: 'fullMultiPolygonLiteral', lower: 'fullmultipolygonliteral', index: 337, isBkr: false };
      this.rules[338] = { name: 'multiPolygonLiteral', lower: 'multipolygonliteral', index: 338, isBkr: false };
      this.rules[339] = { name: 'geographyPoint', lower: 'geographypoint', index: 339, isBkr: false };
      this.rules[340] = { name: 'fullPointLiteral', lower: 'fullpointliteral', index: 340, isBkr: false };
      this.rules[341] = { name: 'sridLiteral', lower: 'sridliteral', index: 341, isBkr: false };
      this.rules[342] = { name: 'pointLiteral', lower: 'pointliteral', index: 342, isBkr: false };
      this.rules[343] = { name: 'pointData', lower: 'pointdata', index: 343, isBkr: false };
      this.rules[344] = { name: 'positionLiteral', lower: 'positionliteral', index: 344, isBkr: false };
      this.rules[345] = { name: 'geographyPolygon', lower: 'geographypolygon', index: 345, isBkr: false };
      this.rules[346] = { name: 'fullPolygonLiteral', lower: 'fullpolygonliteral', index: 346, isBkr: false };
      this.rules[347] = { name: 'polygonLiteral', lower: 'polygonliteral', index: 347, isBkr: false };
      this.rules[348] = { name: 'polygonData', lower: 'polygondata', index: 348, isBkr: false };
      this.rules[349] = { name: 'ringLiteral', lower: 'ringliteral', index: 349, isBkr: false };
      this.rules[350] = { name: 'geometryCollection', lower: 'geometrycollection', index: 350, isBkr: false };
      this.rules[351] = { name: 'geometryLineString', lower: 'geometrylinestring', index: 351, isBkr: false };
      this.rules[352] = { name: 'geometryMultiLineString', lower: 'geometrymultilinestring', index: 352, isBkr: false };
      this.rules[353] = { name: 'geometryMultiPoint', lower: 'geometrymultipoint', index: 353, isBkr: false };
      this.rules[354] = { name: 'geometryMultiPolygon', lower: 'geometrymultipolygon', index: 354, isBkr: false };
      this.rules[355] = { name: 'geometryPoint', lower: 'geometrypoint', index: 355, isBkr: false };
      this.rules[356] = { name: 'geometryPolygon', lower: 'geometrypolygon', index: 356, isBkr: false };
      this.rules[357] = { name: 'geographyPrefix', lower: 'geographyprefix', index: 357, isBkr: false };
      this.rules[358] = { name: 'geometryPrefix', lower: 'geometryprefix', index: 358, isBkr: false };
      this.rules[359] = { name: 'header', lower: 'header', index: 359, isBkr: false };
      this.rules[360] = { name: 'content-id', lower: 'content-id', index: 360, isBkr: false };
      this.rules[361] = { name: 'isolation', lower: 'isolation', index: 361, isBkr: false };
      this.rules[362] = { name: 'request-id', lower: 'request-id', index: 362, isBkr: false };
      this.rules[363] = { name: 'odata-entityid', lower: 'odata-entityid', index: 363, isBkr: false };
      this.rules[364] = { name: 'odata-error', lower: 'odata-error', index: 364, isBkr: false };
      this.rules[365] = { name: 'odata-maxversion', lower: 'odata-maxversion', index: 365, isBkr: false };
      this.rules[366] = { name: 'odata-version', lower: 'odata-version', index: 366, isBkr: false };
      this.rules[367] = { name: 'prefer', lower: 'prefer', index: 367, isBkr: false };
      this.rules[368] = { name: 'preference', lower: 'preference', index: 368, isBkr: false };
      this.rules[369] = { name: 'allowEntityReferencesPreference', lower: 'allowentityreferencespreference', index: 369, isBkr: false };
      this.rules[370] = { name: 'callbackPreference', lower: 'callbackpreference', index: 370, isBkr: false };
      this.rules[371] = { name: 'continueOnErrorPreference', lower: 'continueonerrorpreference', index: 371, isBkr: false };
      this.rules[372] = { name: 'includeAnnotationsPreference', lower: 'includeannotationspreference', index: 372, isBkr: false };
      this.rules[373] = { name: 'annotationsList', lower: 'annotationslist', index: 373, isBkr: false };
      this.rules[374] = { name: 'annotationIdentifier', lower: 'annotationidentifier', index: 374, isBkr: false };
      this.rules[375] = { name: 'excludeOperator', lower: 'excludeoperator', index: 375, isBkr: false };
      this.rules[376] = { name: 'maxpagesizePreference', lower: 'maxpagesizepreference', index: 376, isBkr: false };
      this.rules[377] = { name: 'omitValuesPreference', lower: 'omitvaluespreference', index: 377, isBkr: false };
      this.rules[378] = { name: 'respondAsyncPreference', lower: 'respondasyncpreference', index: 378, isBkr: false };
      this.rules[379] = { name: 'returnPreference', lower: 'returnpreference', index: 379, isBkr: false };
      this.rules[380] = { name: 'trackChangesPreference', lower: 'trackchangespreference', index: 380, isBkr: false };
      this.rules[381] = { name: 'waitPreference', lower: 'waitpreference', index: 381, isBkr: false };
      this.rules[382] = { name: 'obs-text', lower: 'obs-text', index: 382, isBkr: false };
      this.rules[383] = { name: 'OWS', lower: 'ows', index: 383, isBkr: false };
      this.rules[384] = { name: 'BWS-h', lower: 'bws-h', index: 384, isBkr: false };
      this.rules[385] = { name: 'EQ-h', lower: 'eq-h', index: 385, isBkr: false };
      this.rules[386] = { name: 'RWS', lower: 'rws', index: 386, isBkr: false };
      this.rules[387] = { name: 'BWS', lower: 'bws', index: 387, isBkr: false };
      this.rules[388] = { name: 'AT', lower: 'at', index: 388, isBkr: false };
      this.rules[389] = { name: 'COLON', lower: 'colon', index: 389, isBkr: false };
      this.rules[390] = { name: 'COMMA', lower: 'comma', index: 390, isBkr: false };
      this.rules[391] = { name: 'EQ', lower: 'eq', index: 391, isBkr: false };
      this.rules[392] = { name: 'HASH', lower: 'hash', index: 392, isBkr: false };
      this.rules[393] = { name: 'SIGN', lower: 'sign', index: 393, isBkr: false };
      this.rules[394] = { name: 'SEMI', lower: 'semi', index: 394, isBkr: false };
      this.rules[395] = { name: 'STAR', lower: 'star', index: 395, isBkr: false };
      this.rules[396] = { name: 'SQUOTE', lower: 'squote', index: 396, isBkr: false };
      this.rules[397] = { name: 'OPEN', lower: 'open', index: 397, isBkr: false };
      this.rules[398] = { name: 'CLOSE', lower: 'close', index: 398, isBkr: false };
      this.rules[399] = { name: 'URI', lower: 'uri', index: 399, isBkr: false };
      this.rules[400] = { name: 'hier-part', lower: 'hier-part', index: 400, isBkr: false };
      this.rules[401] = { name: 'scheme', lower: 'scheme', index: 401, isBkr: false };
      this.rules[402] = { name: 'authority', lower: 'authority', index: 402, isBkr: false };
      this.rules[403] = { name: 'userinfo', lower: 'userinfo', index: 403, isBkr: false };
      this.rules[404] = { name: 'host', lower: 'host', index: 404, isBkr: false };
      this.rules[405] = { name: 'port', lower: 'port', index: 405, isBkr: false };
      this.rules[406] = { name: 'IP-literal', lower: 'ip-literal', index: 406, isBkr: false };
      this.rules[407] = { name: 'IPvFuture', lower: 'ipvfuture', index: 407, isBkr: false };
      this.rules[408] = { name: 'IPv6address', lower: 'ipv6address', index: 408, isBkr: false };
      this.rules[409] = { name: 'h16', lower: 'h16', index: 409, isBkr: false };
      this.rules[410] = { name: 'ls32', lower: 'ls32', index: 410, isBkr: false };
      this.rules[411] = { name: 'IPv4address', lower: 'ipv4address', index: 411, isBkr: false };
      this.rules[412] = { name: 'dec-octet', lower: 'dec-octet', index: 412, isBkr: false };
      this.rules[413] = { name: 'reg-name', lower: 'reg-name', index: 413, isBkr: false };
      this.rules[414] = { name: 'path-abempty', lower: 'path-abempty', index: 414, isBkr: false };
      this.rules[415] = { name: 'path-absolute', lower: 'path-absolute', index: 415, isBkr: false };
      this.rules[416] = { name: 'path-rootless', lower: 'path-rootless', index: 416, isBkr: false };
      this.rules[417] = { name: 'segment', lower: 'segment', index: 417, isBkr: false };
      this.rules[418] = { name: 'segment-nz', lower: 'segment-nz', index: 418, isBkr: false };
      this.rules[419] = { name: 'pchar', lower: 'pchar', index: 419, isBkr: false };
      this.rules[420] = { name: 'query', lower: 'query', index: 420, isBkr: false };
      this.rules[421] = { name: 'fragment', lower: 'fragment', index: 421, isBkr: false };
      this.rules[422] = { name: 'pct-encoded', lower: 'pct-encoded', index: 422, isBkr: false };
      this.rules[423] = { name: 'unreserved', lower: 'unreserved', index: 423, isBkr: false };
      this.rules[424] = { name: 'sub-delims', lower: 'sub-delims', index: 424, isBkr: false };
      this.rules[425] = { name: 'other-delims', lower: 'other-delims', index: 425, isBkr: false };
      this.rules[426] = { name: 'pchar-no-SQUOTE', lower: 'pchar-no-squote', index: 426, isBkr: false };
      this.rules[427] = { name: 'pct-encoded-no-SQUOTE', lower: 'pct-encoded-no-squote', index: 427, isBkr: false };
      this.rules[428] = { name: 'qchar-no-AMP', lower: 'qchar-no-amp', index: 428, isBkr: false };
      this.rules[429] = { name: 'qchar-no-AMP-EQ', lower: 'qchar-no-amp-eq', index: 429, isBkr: false };
      this.rules[430] = { name: 'qchar-no-AMP-EQ-AT-DOLLAR', lower: 'qchar-no-amp-eq-at-dollar', index: 430, isBkr: false };
      this.rules[431] = { name: 'qchar-no-AMP-SQUOTE', lower: 'qchar-no-amp-squote', index: 431, isBkr: false };
      this.rules[432] = { name: 'qchar-no-AMP-DQUOTE', lower: 'qchar-no-amp-dquote', index: 432, isBkr: false };
      this.rules[433] = { name: 'qchar-unescaped', lower: 'qchar-unescaped', index: 433, isBkr: false };
      this.rules[434] = { name: 'pct-encoded-unescaped', lower: 'pct-encoded-unescaped', index: 434, isBkr: false };
      this.rules[435] = { name: 'pct-encoded-no-DQUOTE', lower: 'pct-encoded-no-dquote', index: 435, isBkr: false };
      this.rules[436] = { name: 'IRI-in-header', lower: 'iri-in-header', index: 436, isBkr: false };
      this.rules[437] = { name: 'IRI-in-query', lower: 'iri-in-query', index: 437, isBkr: false };
      this.rules[438] = { name: 'ALPHA', lower: 'alpha', index: 438, isBkr: false };
      this.rules[439] = { name: 'DIGIT', lower: 'digit', index: 439, isBkr: false };
      this.rules[440] = { name: 'HEXDIG', lower: 'hexdig', index: 440, isBkr: false };
      this.rules[441] = { name: 'A-to-F', lower: 'a-to-f', index: 441, isBkr: false };
      this.rules[442] = { name: 'DQUOTE', lower: 'dquote', index: 442, isBkr: false };
      this.rules[443] = { name: 'SP', lower: 'sp', index: 443, isBkr: false };
      this.rules[444] = { name: 'HTAB', lower: 'htab', index: 444, isBkr: false };
      this.rules[445] = { name: 'VCHAR', lower: 'vchar', index: 445, isBkr: false };
    
      /* UDTS */
      this.udts = [];
    
      /* OPCODES */
      /* dummyStartRule */
      this.rules[0].opcodes = [];
      this.rules[0].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[0].opcodes[1] = { type: 4, index: 1 };// RNM(odataUri)
      this.rules[0].opcodes[2] = { type: 4, index: 359 };// RNM(header)
      this.rules[0].opcodes[3] = { type: 4, index: 282 };// RNM(primitiveValue)
    
      /* odataUri */
      this.rules[1].opcodes = [];
      this.rules[1].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[1].opcodes[1] = { type: 4, index: 2 };// RNM(serviceRoot)
      this.rules[1].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[1].opcodes[3] = { type: 4, index: 3 };// RNM(odataRelativeUri)
    
      /* serviceRoot */
      this.rules[2].opcodes = [];
      this.rules[2].opcodes[0] = { type: 2, children: [1,4,5,6,10,11] };// CAT
      this.rules[2].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[2].opcodes[2] = { type: 7, string: [104,116,116,112,115] };// TLS
      this.rules[2].opcodes[3] = { type: 7, string: [104,116,116,112] };// TLS
      this.rules[2].opcodes[4] = { type: 7, string: [58,47,47] };// TLS
      this.rules[2].opcodes[5] = { type: 4, index: 404 };// RNM(host)
      this.rules[2].opcodes[6] = { type: 3, min: 0, max: 1 };// REP
      this.rules[2].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[2].opcodes[8] = { type: 7, string: [58] };// TLS
      this.rules[2].opcodes[9] = { type: 4, index: 405 };// RNM(port)
      this.rules[2].opcodes[10] = { type: 7, string: [47] };// TLS
      this.rules[2].opcodes[11] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[2].opcodes[12] = { type: 2, children: [13,14] };// CAT
      this.rules[2].opcodes[13] = { type: 4, index: 418 };// RNM(segment-nz)
      this.rules[2].opcodes[14] = { type: 7, string: [47] };// TLS
    
      /* odataRelativeUri */
      this.rules[3].opcodes = [];
      this.rules[3].opcodes[0] = { type: 1, children: [1,7,11,17,25] };// ALT
      this.rules[3].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[3].opcodes[2] = { type: 6, string: [36,98,97,116,99,104] };// TBS
      this.rules[3].opcodes[3] = { type: 3, min: 0, max: 1 };// REP
      this.rules[3].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[3].opcodes[5] = { type: 7, string: [63] };// TLS
      this.rules[3].opcodes[6] = { type: 4, index: 54 };// RNM(batchOptions)
      this.rules[3].opcodes[7] = { type: 2, children: [8,9,10] };// CAT
      this.rules[3].opcodes[8] = { type: 6, string: [36,101,110,116,105,116,121] };// TBS
      this.rules[3].opcodes[9] = { type: 7, string: [63] };// TLS
      this.rules[3].opcodes[10] = { type: 4, index: 58 };// RNM(entityOptions)
      this.rules[3].opcodes[11] = { type: 2, children: [12,13,14,15,16] };// CAT
      this.rules[3].opcodes[12] = { type: 6, string: [36,101,110,116,105,116,121] };// TBS
      this.rules[3].opcodes[13] = { type: 7, string: [47] };// TLS
      this.rules[3].opcodes[14] = { type: 4, index: 238 };// RNM(optionallyQualifiedEntityTypeName)
      this.rules[3].opcodes[15] = { type: 7, string: [63] };// TLS
      this.rules[3].opcodes[16] = { type: 4, index: 60 };// RNM(entityCastOptions)
      this.rules[3].opcodes[17] = { type: 2, children: [18,19,23] };// CAT
      this.rules[3].opcodes[18] = { type: 6, string: [36,109,101,116,97,100,97,116,97] };// TBS
      this.rules[3].opcodes[19] = { type: 3, min: 0, max: 1 };// REP
      this.rules[3].opcodes[20] = { type: 2, children: [21,22] };// CAT
      this.rules[3].opcodes[21] = { type: 7, string: [63] };// TLS
      this.rules[3].opcodes[22] = { type: 4, index: 56 };// RNM(metadataOptions)
      this.rules[3].opcodes[23] = { type: 3, min: 0, max: 1 };// REP
      this.rules[3].opcodes[24] = { type: 4, index: 115 };// RNM(context)
      this.rules[3].opcodes[25] = { type: 2, children: [26,27] };// CAT
      this.rules[3].opcodes[26] = { type: 4, index: 4 };// RNM(resourcePath)
      this.rules[3].opcodes[27] = { type: 3, min: 0, max: 1 };// REP
      this.rules[3].opcodes[28] = { type: 2, children: [29,30] };// CAT
      this.rules[3].opcodes[29] = { type: 7, string: [63] };// TLS
      this.rules[3].opcodes[30] = { type: 4, index: 52 };// RNM(queryOptions)
    
      /* resourcePath */
      this.rules[4].opcodes = [];
      this.rules[4].opcodes[0] = { type: 1, children: [1,5,9,10,14,18,22,26,30,34,38,42] };// ALT
      this.rules[4].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[4].opcodes[2] = { type: 4, index: 242 };// RNM(entitySetName)
      this.rules[4].opcodes[3] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[4] = { type: 4, index: 5 };// RNM(collectionNavigation)
      this.rules[4].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[4].opcodes[6] = { type: 4, index: 243 };// RNM(singletonEntity)
      this.rules[4].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[8] = { type: 4, index: 15 };// RNM(singleNavigation)
      this.rules[4].opcodes[9] = { type: 4, index: 31 };// RNM(actionImportCall)
      this.rules[4].opcodes[10] = { type: 2, children: [11,12] };// CAT
      this.rules[4].opcodes[11] = { type: 4, index: 41 };// RNM(entityColFunctionImportCall)
      this.rules[4].opcodes[12] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[13] = { type: 4, index: 5 };// RNM(collectionNavigation)
      this.rules[4].opcodes[14] = { type: 2, children: [15,16] };// CAT
      this.rules[4].opcodes[15] = { type: 4, index: 40 };// RNM(entityFunctionImportCall)
      this.rules[4].opcodes[16] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[17] = { type: 4, index: 15 };// RNM(singleNavigation)
      this.rules[4].opcodes[18] = { type: 2, children: [19,20] };// CAT
      this.rules[4].opcodes[19] = { type: 4, index: 43 };// RNM(complexColFunctionImportCall)
      this.rules[4].opcodes[20] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[21] = { type: 4, index: 20 };// RNM(complexColPath)
      this.rules[4].opcodes[22] = { type: 2, children: [23,24] };// CAT
      this.rules[4].opcodes[23] = { type: 4, index: 42 };// RNM(complexFunctionImportCall)
      this.rules[4].opcodes[24] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[25] = { type: 4, index: 21 };// RNM(complexPath)
      this.rules[4].opcodes[26] = { type: 2, children: [27,28] };// CAT
      this.rules[4].opcodes[27] = { type: 4, index: 45 };// RNM(primitiveColFunctionImportCall)
      this.rules[4].opcodes[28] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[29] = { type: 4, index: 18 };// RNM(collectionPath)
      this.rules[4].opcodes[30] = { type: 2, children: [31,32] };// CAT
      this.rules[4].opcodes[31] = { type: 4, index: 44 };// RNM(primitiveFunctionImportCall)
      this.rules[4].opcodes[32] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[33] = { type: 4, index: 19 };// RNM(primitivePath)
      this.rules[4].opcodes[34] = { type: 2, children: [35,36] };// CAT
      this.rules[4].opcodes[35] = { type: 4, index: 46 };// RNM(functionImportCallNoParens)
      this.rules[4].opcodes[36] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[37] = { type: 4, index: 28 };// RNM(querySegment)
      this.rules[4].opcodes[38] = { type: 2, children: [39,40] };// CAT
      this.rules[4].opcodes[39] = { type: 4, index: 51 };// RNM(crossjoin)
      this.rules[4].opcodes[40] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[41] = { type: 4, index: 28 };// RNM(querySegment)
      this.rules[4].opcodes[42] = { type: 2, children: [43,44] };// CAT
      this.rules[4].opcodes[43] = { type: 6, string: [36,97,108,108] };// TBS
      this.rules[4].opcodes[44] = { type: 3, min: 0, max: 1 };// REP
      this.rules[4].opcodes[45] = { type: 2, children: [46,47] };// CAT
      this.rules[4].opcodes[46] = { type: 7, string: [47] };// TLS
      this.rules[4].opcodes[47] = { type: 4, index: 238 };// RNM(optionallyQualifiedEntityTypeName)
    
      /* collectionNavigation */
      this.rules[5].opcodes = [];
      this.rules[5].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[5].opcodes[1] = { type: 4, index: 6 };// RNM(collectionNavPath)
      this.rules[5].opcodes[2] = { type: 2, children: [3,4,5] };// CAT
      this.rules[5].opcodes[3] = { type: 7, string: [47] };// TLS
      this.rules[5].opcodes[4] = { type: 4, index: 238 };// RNM(optionallyQualifiedEntityTypeName)
      this.rules[5].opcodes[5] = { type: 3, min: 0, max: 1 };// REP
      this.rules[5].opcodes[6] = { type: 4, index: 6 };// RNM(collectionNavPath)
    
      /* collectionNavPath */
      this.rules[6].opcodes = [];
      this.rules[6].opcodes[0] = { type: 1, children: [1,5,9,13,14,15,16] };// ALT
      this.rules[6].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[6].opcodes[2] = { type: 4, index: 7 };// RNM(keyPredicate)
      this.rules[6].opcodes[3] = { type: 3, min: 0, max: 1 };// REP
      this.rules[6].opcodes[4] = { type: 4, index: 15 };// RNM(singleNavigation)
      this.rules[6].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[6].opcodes[6] = { type: 4, index: 23 };// RNM(filterInPath)
      this.rules[6].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[6].opcodes[8] = { type: 4, index: 5 };// RNM(collectionNavigation)
      this.rules[6].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[6].opcodes[10] = { type: 4, index: 24 };// RNM(each)
      this.rules[6].opcodes[11] = { type: 3, min: 0, max: 1 };// REP
      this.rules[6].opcodes[12] = { type: 4, index: 30 };// RNM(boundOperation)
      this.rules[6].opcodes[13] = { type: 4, index: 30 };// RNM(boundOperation)
      this.rules[6].opcodes[14] = { type: 4, index: 25 };// RNM(count)
      this.rules[6].opcodes[15] = { type: 4, index: 26 };// RNM(ref)
      this.rules[6].opcodes[16] = { type: 4, index: 28 };// RNM(querySegment)
    
      /* keyPredicate */
      this.rules[7].opcodes = [];
      this.rules[7].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[7].opcodes[1] = { type: 4, index: 8 };// RNM(simpleKey)
      this.rules[7].opcodes[2] = { type: 4, index: 9 };// RNM(compoundKey)
      this.rules[7].opcodes[3] = { type: 4, index: 13 };// RNM(keyPathSegments)
    
      /* simpleKey */
      this.rules[8].opcodes = [];
      this.rules[8].opcodes[0] = { type: 2, children: [1,2,5] };// CAT
      this.rules[8].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[8].opcodes[2] = { type: 1, children: [3,4] };// ALT
      this.rules[8].opcodes[3] = { type: 4, index: 50 };// RNM(parameterAlias)
      this.rules[8].opcodes[4] = { type: 4, index: 11 };// RNM(keyPropertyValue)
      this.rules[8].opcodes[5] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* compoundKey */
      this.rules[9].opcodes = [];
      this.rules[9].opcodes[0] = { type: 2, children: [1,2,3,7] };// CAT
      this.rules[9].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[9].opcodes[2] = { type: 4, index: 10 };// RNM(keyValuePair)
      this.rules[9].opcodes[3] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[9].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[9].opcodes[5] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[9].opcodes[6] = { type: 4, index: 10 };// RNM(keyValuePair)
      this.rules[9].opcodes[7] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* keyValuePair */
      this.rules[10].opcodes = [];
      this.rules[10].opcodes[0] = { type: 2, children: [1,4,5] };// CAT
      this.rules[10].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[10].opcodes[2] = { type: 4, index: 257 };// RNM(primitiveKeyProperty)
      this.rules[10].opcodes[3] = { type: 4, index: 12 };// RNM(keyPropertyAlias)
      this.rules[10].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[10].opcodes[5] = { type: 1, children: [6,7] };// ALT
      this.rules[10].opcodes[6] = { type: 4, index: 50 };// RNM(parameterAlias)
      this.rules[10].opcodes[7] = { type: 4, index: 11 };// RNM(keyPropertyValue)
    
      /* keyPropertyValue */
      this.rules[11].opcodes = [];
      this.rules[11].opcodes[0] = { type: 4, index: 281 };// RNM(primitiveLiteral)
    
      /* keyPropertyAlias */
      this.rules[12].opcodes = [];
      this.rules[12].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* keyPathSegments */
      this.rules[13].opcodes = [];
      this.rules[13].opcodes[0] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[13].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[13].opcodes[2] = { type: 7, string: [47] };// TLS
      this.rules[13].opcodes[3] = { type: 4, index: 14 };// RNM(keyPathLiteral)
    
      /* keyPathLiteral */
      this.rules[14].opcodes = [];
      this.rules[14].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[14].opcodes[1] = { type: 4, index: 419 };// RNM(pchar)
    
      /* singleNavigation */
      this.rules[15].opcodes = [];
      this.rules[15].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[15].opcodes[1] = { type: 4, index: 16 };// RNM(singleNavPath)
      this.rules[15].opcodes[2] = { type: 2, children: [3,4,5] };// CAT
      this.rules[15].opcodes[3] = { type: 7, string: [47] };// TLS
      this.rules[15].opcodes[4] = { type: 4, index: 238 };// RNM(optionallyQualifiedEntityTypeName)
      this.rules[15].opcodes[5] = { type: 3, min: 0, max: 1 };// REP
      this.rules[15].opcodes[6] = { type: 4, index: 16 };// RNM(singleNavPath)
    
      /* singleNavPath */
      this.rules[16].opcodes = [];
      this.rules[16].opcodes[0] = { type: 1, children: [1,4,5,6,7] };// ALT
      this.rules[16].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[16].opcodes[2] = { type: 7, string: [47] };// TLS
      this.rules[16].opcodes[3] = { type: 4, index: 17 };// RNM(propertyPath)
      this.rules[16].opcodes[4] = { type: 4, index: 30 };// RNM(boundOperation)
      this.rules[16].opcodes[5] = { type: 4, index: 26 };// RNM(ref)
      this.rules[16].opcodes[6] = { type: 4, index: 27 };// RNM(value)
      this.rules[16].opcodes[7] = { type: 4, index: 28 };// RNM(querySegment)
    
      /* propertyPath */
      this.rules[17].opcodes = [];
      this.rules[17].opcodes[0] = { type: 1, children: [1,5,9,13,17,21,25] };// ALT
      this.rules[17].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[17].opcodes[2] = { type: 4, index: 265 };// RNM(entityColNavigationProperty)
      this.rules[17].opcodes[3] = { type: 3, min: 0, max: 1 };// REP
      this.rules[17].opcodes[4] = { type: 4, index: 5 };// RNM(collectionNavigation)
      this.rules[17].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[17].opcodes[6] = { type: 4, index: 264 };// RNM(entityNavigationProperty)
      this.rules[17].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[17].opcodes[8] = { type: 4, index: 15 };// RNM(singleNavigation)
      this.rules[17].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[17].opcodes[10] = { type: 4, index: 261 };// RNM(complexColProperty)
      this.rules[17].opcodes[11] = { type: 3, min: 0, max: 1 };// REP
      this.rules[17].opcodes[12] = { type: 4, index: 20 };// RNM(complexColPath)
      this.rules[17].opcodes[13] = { type: 2, children: [14,15] };// CAT
      this.rules[17].opcodes[14] = { type: 4, index: 260 };// RNM(complexProperty)
      this.rules[17].opcodes[15] = { type: 3, min: 0, max: 1 };// REP
      this.rules[17].opcodes[16] = { type: 4, index: 21 };// RNM(complexPath)
      this.rules[17].opcodes[17] = { type: 2, children: [18,19] };// CAT
      this.rules[17].opcodes[18] = { type: 4, index: 259 };// RNM(primitiveColProperty)
      this.rules[17].opcodes[19] = { type: 3, min: 0, max: 1 };// REP
      this.rules[17].opcodes[20] = { type: 4, index: 18 };// RNM(collectionPath)
      this.rules[17].opcodes[21] = { type: 2, children: [22,23] };// CAT
      this.rules[17].opcodes[22] = { type: 4, index: 256 };// RNM(primitiveProperty)
      this.rules[17].opcodes[23] = { type: 3, min: 0, max: 1 };// REP
      this.rules[17].opcodes[24] = { type: 4, index: 19 };// RNM(primitivePath)
      this.rules[17].opcodes[25] = { type: 2, children: [26,27] };// CAT
      this.rules[17].opcodes[26] = { type: 4, index: 262 };// RNM(streamProperty)
      this.rules[17].opcodes[27] = { type: 3, min: 0, max: 1 };// REP
      this.rules[17].opcodes[28] = { type: 4, index: 30 };// RNM(boundOperation)
    
      /* collectionPath */
      this.rules[18].opcodes = [];
      this.rules[18].opcodes[0] = { type: 1, children: [1,2,3,4] };// ALT
      this.rules[18].opcodes[1] = { type: 4, index: 25 };// RNM(count)
      this.rules[18].opcodes[2] = { type: 4, index: 30 };// RNM(boundOperation)
      this.rules[18].opcodes[3] = { type: 4, index: 29 };// RNM(ordinalIndex)
      this.rules[18].opcodes[4] = { type: 4, index: 28 };// RNM(querySegment)
    
      /* primitivePath */
      this.rules[19].opcodes = [];
      this.rules[19].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[19].opcodes[1] = { type: 4, index: 27 };// RNM(value)
      this.rules[19].opcodes[2] = { type: 4, index: 30 };// RNM(boundOperation)
      this.rules[19].opcodes[3] = { type: 4, index: 28 };// RNM(querySegment)
    
      /* complexColPath */
      this.rules[20].opcodes = [];
      this.rules[20].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[20].opcodes[1] = { type: 4, index: 18 };// RNM(collectionPath)
      this.rules[20].opcodes[2] = { type: 2, children: [3,4,5] };// CAT
      this.rules[20].opcodes[3] = { type: 7, string: [47] };// TLS
      this.rules[20].opcodes[4] = { type: 4, index: 239 };// RNM(optionallyQualifiedComplexTypeName)
      this.rules[20].opcodes[5] = { type: 3, min: 0, max: 1 };// REP
      this.rules[20].opcodes[6] = { type: 4, index: 18 };// RNM(collectionPath)
    
      /* complexPath */
      this.rules[21].opcodes = [];
      this.rules[21].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[21].opcodes[1] = { type: 4, index: 22 };// RNM(complexNavPath)
      this.rules[21].opcodes[2] = { type: 2, children: [3,4,5] };// CAT
      this.rules[21].opcodes[3] = { type: 7, string: [47] };// TLS
      this.rules[21].opcodes[4] = { type: 4, index: 239 };// RNM(optionallyQualifiedComplexTypeName)
      this.rules[21].opcodes[5] = { type: 3, min: 0, max: 1 };// REP
      this.rules[21].opcodes[6] = { type: 4, index: 22 };// RNM(complexNavPath)
    
      /* complexNavPath */
      this.rules[22].opcodes = [];
      this.rules[22].opcodes[0] = { type: 1, children: [1,4,5] };// ALT
      this.rules[22].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[22].opcodes[2] = { type: 7, string: [47] };// TLS
      this.rules[22].opcodes[3] = { type: 4, index: 17 };// RNM(propertyPath)
      this.rules[22].opcodes[4] = { type: 4, index: 30 };// RNM(boundOperation)
      this.rules[22].opcodes[5] = { type: 4, index: 28 };// RNM(querySegment)
    
      /* filterInPath */
      this.rules[23].opcodes = [];
      this.rules[23].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[23].opcodes[1] = { type: 6, string: [47,36,102,105,108,116,101,114] };// TBS
      this.rules[23].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[23].opcodes[3] = { type: 4, index: 129 };// RNM(boolCommonExpr)
      this.rules[23].opcodes[4] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* each */
      this.rules[24].opcodes = [];
      this.rules[24].opcodes[0] = { type: 6, string: [47,36,101,97,99,104] };// TBS
    
      /* count */
      this.rules[25].opcodes = [];
      this.rules[25].opcodes[0] = { type: 6, string: [47,36,99,111,117,110,116] };// TBS
    
      /* ref */
      this.rules[26].opcodes = [];
      this.rules[26].opcodes[0] = { type: 6, string: [47,36,114,101,102] };// TBS
    
      /* value */
      this.rules[27].opcodes = [];
      this.rules[27].opcodes[0] = { type: 6, string: [47,36,118,97,108,117,101] };// TBS
    
      /* querySegment */
      this.rules[28].opcodes = [];
      this.rules[28].opcodes[0] = { type: 6, string: [47,36,113,117,101,114,121] };// TBS
    
      /* ordinalIndex */
      this.rules[29].opcodes = [];
      this.rules[29].opcodes[0] = { type: 2, children: [1,2,4] };// CAT
      this.rules[29].opcodes[1] = { type: 7, string: [47] };// TLS
      this.rules[29].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[29].opcodes[3] = { type: 7, string: [45] };// TLS
      this.rules[29].opcodes[4] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[29].opcodes[5] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* boundOperation */
      this.rules[30].opcodes = [];
      this.rules[30].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[30].opcodes[1] = { type: 7, string: [47] };// TLS
      this.rules[30].opcodes[2] = { type: 1, children: [3,4,8,12,16,20,24,28] };// ALT
      this.rules[30].opcodes[3] = { type: 4, index: 32 };// RNM(boundActionCall)
      this.rules[30].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[30].opcodes[5] = { type: 4, index: 34 };// RNM(boundEntityColFunctionCall)
      this.rules[30].opcodes[6] = { type: 3, min: 0, max: 1 };// REP
      this.rules[30].opcodes[7] = { type: 4, index: 5 };// RNM(collectionNavigation)
      this.rules[30].opcodes[8] = { type: 2, children: [9,10] };// CAT
      this.rules[30].opcodes[9] = { type: 4, index: 33 };// RNM(boundEntityFunctionCall)
      this.rules[30].opcodes[10] = { type: 3, min: 0, max: 1 };// REP
      this.rules[30].opcodes[11] = { type: 4, index: 15 };// RNM(singleNavigation)
      this.rules[30].opcodes[12] = { type: 2, children: [13,14] };// CAT
      this.rules[30].opcodes[13] = { type: 4, index: 36 };// RNM(boundComplexColFunctionCall)
      this.rules[30].opcodes[14] = { type: 3, min: 0, max: 1 };// REP
      this.rules[30].opcodes[15] = { type: 4, index: 20 };// RNM(complexColPath)
      this.rules[30].opcodes[16] = { type: 2, children: [17,18] };// CAT
      this.rules[30].opcodes[17] = { type: 4, index: 35 };// RNM(boundComplexFunctionCall)
      this.rules[30].opcodes[18] = { type: 3, min: 0, max: 1 };// REP
      this.rules[30].opcodes[19] = { type: 4, index: 21 };// RNM(complexPath)
      this.rules[30].opcodes[20] = { type: 2, children: [21,22] };// CAT
      this.rules[30].opcodes[21] = { type: 4, index: 38 };// RNM(boundPrimitiveColFunctionCall)
      this.rules[30].opcodes[22] = { type: 3, min: 0, max: 1 };// REP
      this.rules[30].opcodes[23] = { type: 4, index: 18 };// RNM(collectionPath)
      this.rules[30].opcodes[24] = { type: 2, children: [25,26] };// CAT
      this.rules[30].opcodes[25] = { type: 4, index: 37 };// RNM(boundPrimitiveFunctionCall)
      this.rules[30].opcodes[26] = { type: 3, min: 0, max: 1 };// REP
      this.rules[30].opcodes[27] = { type: 4, index: 19 };// RNM(primitivePath)
      this.rules[30].opcodes[28] = { type: 2, children: [29,30] };// CAT
      this.rules[30].opcodes[29] = { type: 4, index: 39 };// RNM(boundFunctionCallNoParens)
      this.rules[30].opcodes[30] = { type: 3, min: 0, max: 1 };// REP
      this.rules[30].opcodes[31] = { type: 4, index: 28 };// RNM(querySegment)
    
      /* actionImportCall */
      this.rules[31].opcodes = [];
      this.rules[31].opcodes[0] = { type: 4, index: 267 };// RNM(actionImport)
    
      /* boundActionCall */
      this.rules[32].opcodes = [];
      this.rules[32].opcodes[0] = { type: 2, children: [1,5] };// CAT
      this.rules[32].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[32].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[32].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[32].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[32].opcodes[5] = { type: 4, index: 266 };// RNM(action)
    
      /* boundEntityFunctionCall */
      this.rules[33].opcodes = [];
      this.rules[33].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[33].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[33].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[33].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[33].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[33].opcodes[5] = { type: 4, index: 269 };// RNM(entityFunction)
      this.rules[33].opcodes[6] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* boundEntityColFunctionCall */
      this.rules[34].opcodes = [];
      this.rules[34].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[34].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[34].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[34].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[34].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[34].opcodes[5] = { type: 4, index: 270 };// RNM(entityColFunction)
      this.rules[34].opcodes[6] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* boundComplexFunctionCall */
      this.rules[35].opcodes = [];
      this.rules[35].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[35].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[35].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[35].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[35].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[35].opcodes[5] = { type: 4, index: 271 };// RNM(complexFunction)
      this.rules[35].opcodes[6] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* boundComplexColFunctionCall */
      this.rules[36].opcodes = [];
      this.rules[36].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[36].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[36].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[36].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[36].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[36].opcodes[5] = { type: 4, index: 272 };// RNM(complexColFunction)
      this.rules[36].opcodes[6] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* boundPrimitiveFunctionCall */
      this.rules[37].opcodes = [];
      this.rules[37].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[37].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[37].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[37].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[37].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[37].opcodes[5] = { type: 4, index: 273 };// RNM(primitiveFunction)
      this.rules[37].opcodes[6] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* boundPrimitiveColFunctionCall */
      this.rules[38].opcodes = [];
      this.rules[38].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[38].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[38].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[38].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[38].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[38].opcodes[5] = { type: 4, index: 274 };// RNM(primitiveColFunction)
      this.rules[38].opcodes[6] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* boundFunctionCallNoParens */
      this.rules[39].opcodes = [];
      this.rules[39].opcodes[0] = { type: 1, children: [1,7,13,19,25,31] };// ALT
      this.rules[39].opcodes[1] = { type: 2, children: [2,6] };// CAT
      this.rules[39].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[39].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[39].opcodes[4] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[39].opcodes[5] = { type: 7, string: [46] };// TLS
      this.rules[39].opcodes[6] = { type: 4, index: 269 };// RNM(entityFunction)
      this.rules[39].opcodes[7] = { type: 2, children: [8,12] };// CAT
      this.rules[39].opcodes[8] = { type: 3, min: 0, max: 1 };// REP
      this.rules[39].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[39].opcodes[10] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[39].opcodes[11] = { type: 7, string: [46] };// TLS
      this.rules[39].opcodes[12] = { type: 4, index: 270 };// RNM(entityColFunction)
      this.rules[39].opcodes[13] = { type: 2, children: [14,18] };// CAT
      this.rules[39].opcodes[14] = { type: 3, min: 0, max: 1 };// REP
      this.rules[39].opcodes[15] = { type: 2, children: [16,17] };// CAT
      this.rules[39].opcodes[16] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[39].opcodes[17] = { type: 7, string: [46] };// TLS
      this.rules[39].opcodes[18] = { type: 4, index: 271 };// RNM(complexFunction)
      this.rules[39].opcodes[19] = { type: 2, children: [20,24] };// CAT
      this.rules[39].opcodes[20] = { type: 3, min: 0, max: 1 };// REP
      this.rules[39].opcodes[21] = { type: 2, children: [22,23] };// CAT
      this.rules[39].opcodes[22] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[39].opcodes[23] = { type: 7, string: [46] };// TLS
      this.rules[39].opcodes[24] = { type: 4, index: 272 };// RNM(complexColFunction)
      this.rules[39].opcodes[25] = { type: 2, children: [26,30] };// CAT
      this.rules[39].opcodes[26] = { type: 3, min: 0, max: 1 };// REP
      this.rules[39].opcodes[27] = { type: 2, children: [28,29] };// CAT
      this.rules[39].opcodes[28] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[39].opcodes[29] = { type: 7, string: [46] };// TLS
      this.rules[39].opcodes[30] = { type: 4, index: 273 };// RNM(primitiveFunction)
      this.rules[39].opcodes[31] = { type: 2, children: [32,36] };// CAT
      this.rules[39].opcodes[32] = { type: 3, min: 0, max: 1 };// REP
      this.rules[39].opcodes[33] = { type: 2, children: [34,35] };// CAT
      this.rules[39].opcodes[34] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[39].opcodes[35] = { type: 7, string: [46] };// TLS
      this.rules[39].opcodes[36] = { type: 4, index: 274 };// RNM(primitiveColFunction)
    
      /* entityFunctionImportCall */
      this.rules[40].opcodes = [];
      this.rules[40].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[40].opcodes[1] = { type: 4, index: 275 };// RNM(entityFunctionImport)
      this.rules[40].opcodes[2] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* entityColFunctionImportCall */
      this.rules[41].opcodes = [];
      this.rules[41].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[41].opcodes[1] = { type: 4, index: 276 };// RNM(entityColFunctionImport)
      this.rules[41].opcodes[2] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* complexFunctionImportCall */
      this.rules[42].opcodes = [];
      this.rules[42].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[42].opcodes[1] = { type: 4, index: 277 };// RNM(complexFunctionImport)
      this.rules[42].opcodes[2] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* complexColFunctionImportCall */
      this.rules[43].opcodes = [];
      this.rules[43].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[43].opcodes[1] = { type: 4, index: 278 };// RNM(complexColFunctionImport)
      this.rules[43].opcodes[2] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* primitiveFunctionImportCall */
      this.rules[44].opcodes = [];
      this.rules[44].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[44].opcodes[1] = { type: 4, index: 279 };// RNM(primitiveFunctionImport)
      this.rules[44].opcodes[2] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* primitiveColFunctionImportCall */
      this.rules[45].opcodes = [];
      this.rules[45].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[45].opcodes[1] = { type: 4, index: 280 };// RNM(primitiveColFunctionImport)
      this.rules[45].opcodes[2] = { type: 4, index: 47 };// RNM(functionParameters)
    
      /* functionImportCallNoParens */
      this.rules[46].opcodes = [];
      this.rules[46].opcodes[0] = { type: 1, children: [1,2,3,4,5,6] };// ALT
      this.rules[46].opcodes[1] = { type: 4, index: 275 };// RNM(entityFunctionImport)
      this.rules[46].opcodes[2] = { type: 4, index: 276 };// RNM(entityColFunctionImport)
      this.rules[46].opcodes[3] = { type: 4, index: 277 };// RNM(complexFunctionImport)
      this.rules[46].opcodes[4] = { type: 4, index: 278 };// RNM(complexColFunctionImport)
      this.rules[46].opcodes[5] = { type: 4, index: 279 };// RNM(primitiveFunctionImport)
      this.rules[46].opcodes[6] = { type: 4, index: 280 };// RNM(primitiveColFunctionImport)
    
      /* functionParameters */
      this.rules[47].opcodes = [];
      this.rules[47].opcodes[0] = { type: 2, children: [1,2,9] };// CAT
      this.rules[47].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[47].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[47].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[47].opcodes[4] = { type: 4, index: 48 };// RNM(functionParameter)
      this.rules[47].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[47].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[47].opcodes[7] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[47].opcodes[8] = { type: 4, index: 48 };// RNM(functionParameter)
      this.rules[47].opcodes[9] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* functionParameter */
      this.rules[48].opcodes = [];
      this.rules[48].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[48].opcodes[1] = { type: 4, index: 49 };// RNM(parameterName)
      this.rules[48].opcodes[2] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[48].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[48].opcodes[4] = { type: 4, index: 50 };// RNM(parameterAlias)
      this.rules[48].opcodes[5] = { type: 4, index: 281 };// RNM(primitiveLiteral)
    
      /* parameterName */
      this.rules[49].opcodes = [];
      this.rules[49].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* parameterAlias */
      this.rules[50].opcodes = [];
      this.rules[50].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[50].opcodes[1] = { type: 4, index: 388 };// RNM(AT)
      this.rules[50].opcodes[2] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* crossjoin */
      this.rules[51].opcodes = [];
      this.rules[51].opcodes[0] = { type: 2, children: [1,2,3,4,8] };// CAT
      this.rules[51].opcodes[1] = { type: 6, string: [36,99,114,111,115,115,106,111,105,110] };// TBS
      this.rules[51].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[51].opcodes[3] = { type: 4, index: 242 };// RNM(entitySetName)
      this.rules[51].opcodes[4] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[51].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[51].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[51].opcodes[7] = { type: 4, index: 242 };// RNM(entitySetName)
      this.rules[51].opcodes[8] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* queryOptions */
      this.rules[52].opcodes = [];
      this.rules[52].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[52].opcodes[1] = { type: 4, index: 53 };// RNM(queryOption)
      this.rules[52].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[52].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[52].opcodes[4] = { type: 7, string: [38] };// TLS
      this.rules[52].opcodes[5] = { type: 4, index: 53 };// RNM(queryOption)
    
      /* queryOption */
      this.rules[53].opcodes = [];
      this.rules[53].opcodes[0] = { type: 1, children: [1,2,3,4] };// ALT
      this.rules[53].opcodes[1] = { type: 4, index: 63 };// RNM(systemQueryOption)
      this.rules[53].opcodes[2] = { type: 4, index: 105 };// RNM(aliasAndValue)
      this.rules[53].opcodes[3] = { type: 4, index: 106 };// RNM(nameAndValue)
      this.rules[53].opcodes[4] = { type: 4, index: 108 };// RNM(customQueryOption)
    
      /* batchOptions */
      this.rules[54].opcodes = [];
      this.rules[54].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[54].opcodes[1] = { type: 4, index: 55 };// RNM(batchOption)
      this.rules[54].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[54].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[54].opcodes[4] = { type: 7, string: [38] };// TLS
      this.rules[54].opcodes[5] = { type: 4, index: 55 };// RNM(batchOption)
    
      /* batchOption */
      this.rules[55].opcodes = [];
      this.rules[55].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[55].opcodes[1] = { type: 4, index: 80 };// RNM(format)
      this.rules[55].opcodes[2] = { type: 4, index: 108 };// RNM(customQueryOption)
    
      /* metadataOptions */
      this.rules[56].opcodes = [];
      this.rules[56].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[56].opcodes[1] = { type: 4, index: 57 };// RNM(metadataOption)
      this.rules[56].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[56].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[56].opcodes[4] = { type: 7, string: [38] };// TLS
      this.rules[56].opcodes[5] = { type: 4, index: 57 };// RNM(metadataOption)
    
      /* metadataOption */
      this.rules[57].opcodes = [];
      this.rules[57].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[57].opcodes[1] = { type: 4, index: 80 };// RNM(format)
      this.rules[57].opcodes[2] = { type: 4, index: 108 };// RNM(customQueryOption)
    
      /* entityOptions */
      this.rules[58].opcodes = [];
      this.rules[58].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[58].opcodes[1] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[58].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[58].opcodes[3] = { type: 4, index: 59 };// RNM(entityIdOption)
      this.rules[58].opcodes[4] = { type: 7, string: [38] };// TLS
      this.rules[58].opcodes[5] = { type: 4, index: 62 };// RNM(id)
      this.rules[58].opcodes[6] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[58].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[58].opcodes[8] = { type: 7, string: [38] };// TLS
      this.rules[58].opcodes[9] = { type: 4, index: 59 };// RNM(entityIdOption)
    
      /* entityIdOption */
      this.rules[59].opcodes = [];
      this.rules[59].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[59].opcodes[1] = { type: 4, index: 80 };// RNM(format)
      this.rules[59].opcodes[2] = { type: 4, index: 108 };// RNM(customQueryOption)
    
      /* entityCastOptions */
      this.rules[60].opcodes = [];
      this.rules[60].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[60].opcodes[1] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[60].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[60].opcodes[3] = { type: 4, index: 61 };// RNM(entityCastOption)
      this.rules[60].opcodes[4] = { type: 7, string: [38] };// TLS
      this.rules[60].opcodes[5] = { type: 4, index: 62 };// RNM(id)
      this.rules[60].opcodes[6] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[60].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[60].opcodes[8] = { type: 7, string: [38] };// TLS
      this.rules[60].opcodes[9] = { type: 4, index: 61 };// RNM(entityCastOption)
    
      /* entityCastOption */
      this.rules[61].opcodes = [];
      this.rules[61].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[61].opcodes[1] = { type: 4, index: 59 };// RNM(entityIdOption)
      this.rules[61].opcodes[2] = { type: 4, index: 67 };// RNM(expand)
      this.rules[61].opcodes[3] = { type: 4, index: 93 };// RNM(select)
    
      /* id */
      this.rules[62].opcodes = [];
      this.rules[62].opcodes[0] = { type: 2, children: [1,4,5] };// CAT
      this.rules[62].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[62].opcodes[2] = { type: 7, string: [36,105,100] };// TLS
      this.rules[62].opcodes[3] = { type: 7, string: [105,100] };// TLS
      this.rules[62].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[62].opcodes[5] = { type: 4, index: 437 };// RNM(IRI-in-query)
    
      /* systemQueryOption */
      this.rules[63].opcodes = [];
      this.rules[63].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] };// ALT
      this.rules[63].opcodes[1] = { type: 4, index: 64 };// RNM(compute)
      this.rules[63].opcodes[2] = { type: 4, index: 103 };// RNM(deltatoken)
      this.rules[63].opcodes[3] = { type: 4, index: 67 };// RNM(expand)
      this.rules[63].opcodes[4] = { type: 4, index: 74 };// RNM(filter)
      this.rules[63].opcodes[5] = { type: 4, index: 80 };// RNM(format)
      this.rules[63].opcodes[6] = { type: 4, index: 62 };// RNM(id)
      this.rules[63].opcodes[7] = { type: 4, index: 81 };// RNM(inlinecount)
      this.rules[63].opcodes[8] = { type: 4, index: 75 };// RNM(orderby)
      this.rules[63].opcodes[9] = { type: 4, index: 82 };// RNM(schemaversion)
      this.rules[63].opcodes[10] = { type: 4, index: 83 };// RNM(search)
      this.rules[63].opcodes[11] = { type: 4, index: 93 };// RNM(select)
      this.rules[63].opcodes[12] = { type: 4, index: 77 };// RNM(skip)
      this.rules[63].opcodes[13] = { type: 4, index: 104 };// RNM(skiptoken)
      this.rules[63].opcodes[14] = { type: 4, index: 78 };// RNM(top)
      this.rules[63].opcodes[15] = { type: 4, index: 79 };// RNM(index)
    
      /* compute */
      this.rules[64].opcodes = [];
      this.rules[64].opcodes[0] = { type: 2, children: [1,4,5,6] };// CAT
      this.rules[64].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[64].opcodes[2] = { type: 7, string: [36,99,111,109,112,117,116,101] };// TLS
      this.rules[64].opcodes[3] = { type: 7, string: [99,111,109,112,117,116,101] };// TLS
      this.rules[64].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[64].opcodes[5] = { type: 4, index: 65 };// RNM(computeItem)
      this.rules[64].opcodes[6] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[64].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[64].opcodes[8] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[64].opcodes[9] = { type: 4, index: 65 };// RNM(computeItem)
    
      /* computeItem */
      this.rules[65].opcodes = [];
      this.rules[65].opcodes[0] = { type: 2, children: [1,2,3,4,5] };// CAT
      this.rules[65].opcodes[1] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[65].opcodes[2] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[65].opcodes[3] = { type: 7, string: [97,115] };// TLS
      this.rules[65].opcodes[4] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[65].opcodes[5] = { type: 4, index: 66 };// RNM(computedProperty)
    
      /* computedProperty */
      this.rules[66].opcodes = [];
      this.rules[66].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* expand */
      this.rules[67].opcodes = [];
      this.rules[67].opcodes[0] = { type: 2, children: [1,4,5,6] };// CAT
      this.rules[67].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[67].opcodes[2] = { type: 7, string: [36,101,120,112,97,110,100] };// TLS
      this.rules[67].opcodes[3] = { type: 7, string: [101,120,112,97,110,100] };// TLS
      this.rules[67].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[67].opcodes[5] = { type: 4, index: 68 };// RNM(expandItem)
      this.rules[67].opcodes[6] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[67].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[67].opcodes[8] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[67].opcodes[9] = { type: 4, index: 68 };// RNM(expandItem)
    
      /* expandItem */
      this.rules[68].opcodes = [];
      this.rules[68].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[68].opcodes[1] = { type: 7, string: [36,118,97,108,117,101] };// TLS
      this.rules[68].opcodes[2] = { type: 4, index: 69 };// RNM(expandPath)
      this.rules[68].opcodes[3] = { type: 2, children: [4,5,6] };// CAT
      this.rules[68].opcodes[4] = { type: 4, index: 238 };// RNM(optionallyQualifiedEntityTypeName)
      this.rules[68].opcodes[5] = { type: 7, string: [47] };// TLS
      this.rules[68].opcodes[6] = { type: 4, index: 69 };// RNM(expandPath)
    
      /* expandPath */
      this.rules[69].opcodes = [];
      this.rules[69].opcodes[0] = { type: 2, children: [1,9] };// CAT
      this.rules[69].opcodes[1] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[69].opcodes[2] = { type: 2, children: [3,8] };// CAT
      this.rules[69].opcodes[3] = { type: 1, children: [4,5,6,7] };// ALT
      this.rules[69].opcodes[4] = { type: 4, index: 260 };// RNM(complexProperty)
      this.rules[69].opcodes[5] = { type: 4, index: 261 };// RNM(complexColProperty)
      this.rules[69].opcodes[6] = { type: 4, index: 239 };// RNM(optionallyQualifiedComplexTypeName)
      this.rules[69].opcodes[7] = { type: 4, index: 111 };// RNM(complexAnnotationInQuery)
      this.rules[69].opcodes[8] = { type: 7, string: [47] };// TLS
      this.rules[69].opcodes[9] = { type: 1, children: [10,19,20] };// ALT
      this.rules[69].opcodes[10] = { type: 2, children: [11,12] };// CAT
      this.rules[69].opcodes[11] = { type: 4, index: 395 };// RNM(STAR)
      this.rules[69].opcodes[12] = { type: 3, min: 0, max: 1 };// REP
      this.rules[69].opcodes[13] = { type: 1, children: [14,15] };// ALT
      this.rules[69].opcodes[14] = { type: 4, index: 26 };// RNM(ref)
      this.rules[69].opcodes[15] = { type: 2, children: [16,17,18] };// CAT
      this.rules[69].opcodes[16] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[69].opcodes[17] = { type: 4, index: 73 };// RNM(levels)
      this.rules[69].opcodes[18] = { type: 4, index: 398 };// RNM(CLOSE)
      this.rules[69].opcodes[19] = { type: 4, index: 262 };// RNM(streamProperty)
      this.rules[69].opcodes[20] = { type: 2, children: [21,24,28] };// CAT
      this.rules[69].opcodes[21] = { type: 1, children: [22,23] };// ALT
      this.rules[69].opcodes[22] = { type: 4, index: 263 };// RNM(navigationProperty)
      this.rules[69].opcodes[23] = { type: 4, index: 112 };// RNM(entityAnnotationInQuery)
      this.rules[69].opcodes[24] = { type: 3, min: 0, max: 1 };// REP
      this.rules[69].opcodes[25] = { type: 2, children: [26,27] };// CAT
      this.rules[69].opcodes[26] = { type: 7, string: [47] };// TLS
      this.rules[69].opcodes[27] = { type: 4, index: 238 };// RNM(optionallyQualifiedEntityTypeName)
      this.rules[69].opcodes[28] = { type: 3, min: 0, max: 1 };// REP
      this.rules[69].opcodes[29] = { type: 1, children: [30,41,52] };// ALT
      this.rules[69].opcodes[30] = { type: 2, children: [31,32] };// CAT
      this.rules[69].opcodes[31] = { type: 4, index: 26 };// RNM(ref)
      this.rules[69].opcodes[32] = { type: 3, min: 0, max: 1 };// REP
      this.rules[69].opcodes[33] = { type: 2, children: [34,35,36,40] };// CAT
      this.rules[69].opcodes[34] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[69].opcodes[35] = { type: 4, index: 71 };// RNM(expandRefOption)
      this.rules[69].opcodes[36] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[69].opcodes[37] = { type: 2, children: [38,39] };// CAT
      this.rules[69].opcodes[38] = { type: 4, index: 394 };// RNM(SEMI)
      this.rules[69].opcodes[39] = { type: 4, index: 71 };// RNM(expandRefOption)
      this.rules[69].opcodes[40] = { type: 4, index: 398 };// RNM(CLOSE)
      this.rules[69].opcodes[41] = { type: 2, children: [42,43] };// CAT
      this.rules[69].opcodes[42] = { type: 4, index: 25 };// RNM(count)
      this.rules[69].opcodes[43] = { type: 3, min: 0, max: 1 };// REP
      this.rules[69].opcodes[44] = { type: 2, children: [45,46,47,51] };// CAT
      this.rules[69].opcodes[45] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[69].opcodes[46] = { type: 4, index: 70 };// RNM(expandCountOption)
      this.rules[69].opcodes[47] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[69].opcodes[48] = { type: 2, children: [49,50] };// CAT
      this.rules[69].opcodes[49] = { type: 4, index: 394 };// RNM(SEMI)
      this.rules[69].opcodes[50] = { type: 4, index: 70 };// RNM(expandCountOption)
      this.rules[69].opcodes[51] = { type: 4, index: 398 };// RNM(CLOSE)
      this.rules[69].opcodes[52] = { type: 2, children: [53,54,55,59] };// CAT
      this.rules[69].opcodes[53] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[69].opcodes[54] = { type: 4, index: 72 };// RNM(expandOption)
      this.rules[69].opcodes[55] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[69].opcodes[56] = { type: 2, children: [57,58] };// CAT
      this.rules[69].opcodes[57] = { type: 4, index: 394 };// RNM(SEMI)
      this.rules[69].opcodes[58] = { type: 4, index: 72 };// RNM(expandOption)
      this.rules[69].opcodes[59] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* expandCountOption */
      this.rules[70].opcodes = [];
      this.rules[70].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[70].opcodes[1] = { type: 4, index: 74 };// RNM(filter)
      this.rules[70].opcodes[2] = { type: 4, index: 83 };// RNM(search)
    
      /* expandRefOption */
      this.rules[71].opcodes = [];
      this.rules[71].opcodes[0] = { type: 1, children: [1,2,3,4,5] };// ALT
      this.rules[71].opcodes[1] = { type: 4, index: 70 };// RNM(expandCountOption)
      this.rules[71].opcodes[2] = { type: 4, index: 75 };// RNM(orderby)
      this.rules[71].opcodes[3] = { type: 4, index: 77 };// RNM(skip)
      this.rules[71].opcodes[4] = { type: 4, index: 78 };// RNM(top)
      this.rules[71].opcodes[5] = { type: 4, index: 81 };// RNM(inlinecount)
    
      /* expandOption */
      this.rules[72].opcodes = [];
      this.rules[72].opcodes[0] = { type: 1, children: [1,2,3,4,5,6] };// ALT
      this.rules[72].opcodes[1] = { type: 4, index: 71 };// RNM(expandRefOption)
      this.rules[72].opcodes[2] = { type: 4, index: 93 };// RNM(select)
      this.rules[72].opcodes[3] = { type: 4, index: 67 };// RNM(expand)
      this.rules[72].opcodes[4] = { type: 4, index: 64 };// RNM(compute)
      this.rules[72].opcodes[5] = { type: 4, index: 73 };// RNM(levels)
      this.rules[72].opcodes[6] = { type: 4, index: 105 };// RNM(aliasAndValue)
    
      /* levels */
      this.rules[73].opcodes = [];
      this.rules[73].opcodes[0] = { type: 2, children: [1,4,5] };// CAT
      this.rules[73].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[73].opcodes[2] = { type: 7, string: [36,108,101,118,101,108,115] };// TLS
      this.rules[73].opcodes[3] = { type: 7, string: [108,101,118,101,108,115] };// TLS
      this.rules[73].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[73].opcodes[5] = { type: 1, children: [6,10] };// ALT
      this.rules[73].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[73].opcodes[7] = { type: 4, index: 309 };// RNM(oneToNine)
      this.rules[73].opcodes[8] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[73].opcodes[9] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[73].opcodes[10] = { type: 7, string: [109,97,120] };// TLS
    
      /* filter */
      this.rules[74].opcodes = [];
      this.rules[74].opcodes[0] = { type: 2, children: [1,4,5] };// CAT
      this.rules[74].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[74].opcodes[2] = { type: 7, string: [36,102,105,108,116,101,114] };// TLS
      this.rules[74].opcodes[3] = { type: 7, string: [102,105,108,116,101,114] };// TLS
      this.rules[74].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[74].opcodes[5] = { type: 4, index: 129 };// RNM(boolCommonExpr)
    
      /* orderby */
      this.rules[75].opcodes = [];
      this.rules[75].opcodes[0] = { type: 2, children: [1,4,5,6] };// CAT
      this.rules[75].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[75].opcodes[2] = { type: 7, string: [36,111,114,100,101,114,98,121] };// TLS
      this.rules[75].opcodes[3] = { type: 7, string: [111,114,100,101,114,98,121] };// TLS
      this.rules[75].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[75].opcodes[5] = { type: 4, index: 76 };// RNM(orderbyItem)
      this.rules[75].opcodes[6] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[75].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[75].opcodes[8] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[75].opcodes[9] = { type: 4, index: 76 };// RNM(orderbyItem)
    
      /* orderbyItem */
      this.rules[76].opcodes = [];
      this.rules[76].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[76].opcodes[1] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[76].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[76].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[76].opcodes[4] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[76].opcodes[5] = { type: 1, children: [6,7] };// ALT
      this.rules[76].opcodes[6] = { type: 7, string: [97,115,99] };// TLS
      this.rules[76].opcodes[7] = { type: 7, string: [100,101,115,99] };// TLS
    
      /* skip */
      this.rules[77].opcodes = [];
      this.rules[77].opcodes[0] = { type: 2, children: [1,4,5] };// CAT
      this.rules[77].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[77].opcodes[2] = { type: 7, string: [36,115,107,105,112] };// TLS
      this.rules[77].opcodes[3] = { type: 7, string: [115,107,105,112] };// TLS
      this.rules[77].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[77].opcodes[5] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[77].opcodes[6] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* top */
      this.rules[78].opcodes = [];
      this.rules[78].opcodes[0] = { type: 2, children: [1,4,5] };// CAT
      this.rules[78].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[78].opcodes[2] = { type: 7, string: [36,116,111,112] };// TLS
      this.rules[78].opcodes[3] = { type: 7, string: [116,111,112] };// TLS
      this.rules[78].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[78].opcodes[5] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[78].opcodes[6] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* index */
      this.rules[79].opcodes = [];
      this.rules[79].opcodes[0] = { type: 2, children: [1,4,5,7] };// CAT
      this.rules[79].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[79].opcodes[2] = { type: 7, string: [36,105,110,100,101,120] };// TLS
      this.rules[79].opcodes[3] = { type: 7, string: [105,110,100,101,120] };// TLS
      this.rules[79].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[79].opcodes[5] = { type: 3, min: 0, max: 1 };// REP
      this.rules[79].opcodes[6] = { type: 7, string: [45] };// TLS
      this.rules[79].opcodes[7] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[79].opcodes[8] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* format */
      this.rules[80].opcodes = [];
      this.rules[80].opcodes[0] = { type: 2, children: [1,4,5] };// CAT
      this.rules[80].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[80].opcodes[2] = { type: 7, string: [36,102,111,114,109,97,116] };// TLS
      this.rules[80].opcodes[3] = { type: 7, string: [102,111,114,109,97,116] };// TLS
      this.rules[80].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[80].opcodes[5] = { type: 1, children: [6,7,8,9] };// ALT
      this.rules[80].opcodes[6] = { type: 7, string: [97,116,111,109] };// TLS
      this.rules[80].opcodes[7] = { type: 7, string: [106,115,111,110] };// TLS
      this.rules[80].opcodes[8] = { type: 7, string: [120,109,108] };// TLS
      this.rules[80].opcodes[9] = { type: 2, children: [10,12,13] };// CAT
      this.rules[80].opcodes[10] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[80].opcodes[11] = { type: 4, index: 419 };// RNM(pchar)
      this.rules[80].opcodes[12] = { type: 7, string: [47] };// TLS
      this.rules[80].opcodes[13] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[80].opcodes[14] = { type: 4, index: 419 };// RNM(pchar)
    
      /* inlinecount */
      this.rules[81].opcodes = [];
      this.rules[81].opcodes[0] = { type: 2, children: [1,4,5] };// CAT
      this.rules[81].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[81].opcodes[2] = { type: 7, string: [36,99,111,117,110,116] };// TLS
      this.rules[81].opcodes[3] = { type: 7, string: [99,111,117,110,116] };// TLS
      this.rules[81].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[81].opcodes[5] = { type: 4, index: 289 };// RNM(booleanValue)
    
      /* schemaversion */
      this.rules[82].opcodes = [];
      this.rules[82].opcodes[0] = { type: 2, children: [1,4,5] };// CAT
      this.rules[82].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[82].opcodes[2] = { type: 7, string: [36,115,99,104,101,109,97,118,101,114,115,105,111,110] };// TLS
      this.rules[82].opcodes[3] = { type: 7, string: [115,99,104,101,109,97,118,101,114,115,105,111,110] };// TLS
      this.rules[82].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[82].opcodes[5] = { type: 1, children: [6,7] };// ALT
      this.rules[82].opcodes[6] = { type: 4, index: 395 };// RNM(STAR)
      this.rules[82].opcodes[7] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[82].opcodes[8] = { type: 4, index: 423 };// RNM(unreserved)
    
      /* search */
      this.rules[83].opcodes = [];
      this.rules[83].opcodes[0] = { type: 2, children: [1,4,5,6] };// CAT
      this.rules[83].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[83].opcodes[2] = { type: 7, string: [36,115,101,97,114,99,104] };// TLS
      this.rules[83].opcodes[3] = { type: 7, string: [115,101,97,114,99,104] };// TLS
      this.rules[83].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[83].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[83].opcodes[6] = { type: 1, children: [7,8] };// ALT
      this.rules[83].opcodes[7] = { type: 4, index: 84 };// RNM(searchExpr)
      this.rules[83].opcodes[8] = { type: 4, index: 92 };// RNM(searchExpr-incomplete)
    
      /* searchExpr */
      this.rules[84].opcodes = [];
      this.rules[84].opcodes[0] = { type: 2, children: [1,6] };// CAT
      this.rules[84].opcodes[1] = { type: 1, children: [2,3,4,5] };// ALT
      this.rules[84].opcodes[2] = { type: 4, index: 85 };// RNM(searchParenExpr)
      this.rules[84].opcodes[3] = { type: 4, index: 86 };// RNM(searchNegateExpr)
      this.rules[84].opcodes[4] = { type: 4, index: 89 };// RNM(searchPhrase)
      this.rules[84].opcodes[5] = { type: 4, index: 90 };// RNM(searchWord)
      this.rules[84].opcodes[6] = { type: 3, min: 0, max: 1 };// REP
      this.rules[84].opcodes[7] = { type: 1, children: [8,9] };// ALT
      this.rules[84].opcodes[8] = { type: 4, index: 87 };// RNM(searchOrExpr)
      this.rules[84].opcodes[9] = { type: 4, index: 88 };// RNM(searchAndExpr)
    
      /* searchParenExpr */
      this.rules[85].opcodes = [];
      this.rules[85].opcodes[0] = { type: 2, children: [1,2,3,4,5] };// CAT
      this.rules[85].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[85].opcodes[2] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[85].opcodes[3] = { type: 4, index: 84 };// RNM(searchExpr)
      this.rules[85].opcodes[4] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[85].opcodes[5] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* searchNegateExpr */
      this.rules[86].opcodes = [];
      this.rules[86].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[86].opcodes[1] = { type: 6, string: [78,79,84] };// TBS
      this.rules[86].opcodes[2] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[86].opcodes[3] = { type: 4, index: 84 };// RNM(searchExpr)
    
      /* searchOrExpr */
      this.rules[87].opcodes = [];
      this.rules[87].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[87].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[87].opcodes[2] = { type: 6, string: [79,82] };// TBS
      this.rules[87].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[87].opcodes[4] = { type: 4, index: 84 };// RNM(searchExpr)
    
      /* searchAndExpr */
      this.rules[88].opcodes = [];
      this.rules[88].opcodes[0] = { type: 2, children: [1,2,6] };// CAT
      this.rules[88].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[88].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[88].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[88].opcodes[4] = { type: 6, string: [65,78,68] };// TBS
      this.rules[88].opcodes[5] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[88].opcodes[6] = { type: 4, index: 84 };// RNM(searchExpr)
    
      /* searchPhrase */
      this.rules[89].opcodes = [];
      this.rules[89].opcodes[0] = { type: 2, children: [1,2,6] };// CAT
      this.rules[89].opcodes[1] = { type: 4, index: 223 };// RNM(quotation-mark)
      this.rules[89].opcodes[2] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[89].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[89].opcodes[4] = { type: 4, index: 432 };// RNM(qchar-no-AMP-DQUOTE)
      this.rules[89].opcodes[5] = { type: 4, index: 443 };// RNM(SP)
      this.rules[89].opcodes[6] = { type: 4, index: 223 };// RNM(quotation-mark)
    
      /* searchWord */
      this.rules[90].opcodes = [];
      this.rules[90].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[90].opcodes[1] = { type: 4, index: 91 };// RNM(searchChar)
      this.rules[90].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[90].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[90].opcodes[4] = { type: 4, index: 91 };// RNM(searchChar)
      this.rules[90].opcodes[5] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* searchChar */
      this.rules[91].opcodes = [];
      this.rules[91].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9,10,11,12] };// ALT
      this.rules[91].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[91].opcodes[2] = { type: 4, index: 435 };// RNM(pct-encoded-no-DQUOTE)
      this.rules[91].opcodes[3] = { type: 7, string: [33] };// TLS
      this.rules[91].opcodes[4] = { type: 7, string: [42] };// TLS
      this.rules[91].opcodes[5] = { type: 7, string: [43] };// TLS
      this.rules[91].opcodes[6] = { type: 7, string: [44] };// TLS
      this.rules[91].opcodes[7] = { type: 7, string: [58] };// TLS
      this.rules[91].opcodes[8] = { type: 7, string: [64] };// TLS
      this.rules[91].opcodes[9] = { type: 7, string: [47] };// TLS
      this.rules[91].opcodes[10] = { type: 7, string: [63] };// TLS
      this.rules[91].opcodes[11] = { type: 7, string: [36] };// TLS
      this.rules[91].opcodes[12] = { type: 7, string: [61] };// TLS
    
      /* searchExpr-incomplete */
      this.rules[92].opcodes = [];
      this.rules[92].opcodes[0] = { type: 2, children: [1,2,8] };// CAT
      this.rules[92].opcodes[1] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[92].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[92].opcodes[3] = { type: 1, children: [4,5,6,7] };// ALT
      this.rules[92].opcodes[4] = { type: 4, index: 301 };// RNM(SQUOTE-in-string)
      this.rules[92].opcodes[5] = { type: 4, index: 431 };// RNM(qchar-no-AMP-SQUOTE)
      this.rules[92].opcodes[6] = { type: 4, index: 223 };// RNM(quotation-mark)
      this.rules[92].opcodes[7] = { type: 4, index: 443 };// RNM(SP)
      this.rules[92].opcodes[8] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* select */
      this.rules[93].opcodes = [];
      this.rules[93].opcodes[0] = { type: 2, children: [1,4,5,6] };// CAT
      this.rules[93].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[93].opcodes[2] = { type: 7, string: [36,115,101,108,101,99,116] };// TLS
      this.rules[93].opcodes[3] = { type: 7, string: [115,101,108,101,99,116] };// TLS
      this.rules[93].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[93].opcodes[5] = { type: 4, index: 94 };// RNM(selectItem)
      this.rules[93].opcodes[6] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[93].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[93].opcodes[8] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[93].opcodes[9] = { type: 4, index: 94 };// RNM(selectItem)
    
      /* selectItem */
      this.rules[94].opcodes = [];
      this.rules[94].opcodes[0] = { type: 1, children: [1,2,3,4,5,6] };// ALT
      this.rules[94].opcodes[1] = { type: 4, index: 395 };// RNM(STAR)
      this.rules[94].opcodes[2] = { type: 4, index: 99 };// RNM(allOperationsInSchema)
      this.rules[94].opcodes[3] = { type: 4, index: 95 };// RNM(selectProperty)
      this.rules[94].opcodes[4] = { type: 4, index: 100 };// RNM(optionallyQualifiedActionName)
      this.rules[94].opcodes[5] = { type: 4, index: 101 };// RNM(optionallyQualifiedFunctionName)
      this.rules[94].opcodes[6] = { type: 2, children: [7,10,11] };// CAT
      this.rules[94].opcodes[7] = { type: 1, children: [8,9] };// ALT
      this.rules[94].opcodes[8] = { type: 4, index: 238 };// RNM(optionallyQualifiedEntityTypeName)
      this.rules[94].opcodes[9] = { type: 4, index: 239 };// RNM(optionallyQualifiedComplexTypeName)
      this.rules[94].opcodes[10] = { type: 7, string: [47] };// TLS
      this.rules[94].opcodes[11] = { type: 1, children: [12,13,14] };// ALT
      this.rules[94].opcodes[12] = { type: 4, index: 95 };// RNM(selectProperty)
      this.rules[94].opcodes[13] = { type: 4, index: 100 };// RNM(optionallyQualifiedActionName)
      this.rules[94].opcodes[14] = { type: 4, index: 101 };// RNM(optionallyQualifiedFunctionName)
    
      /* selectProperty */
      this.rules[95].opcodes = [];
      this.rules[95].opcodes[0] = { type: 1, children: [1,2,3,16,17] };// ALT
      this.rules[95].opcodes[1] = { type: 4, index: 256 };// RNM(primitiveProperty)
      this.rules[95].opcodes[2] = { type: 4, index: 113 };// RNM(primitiveAnnotationInQuery)
      this.rules[95].opcodes[3] = { type: 2, children: [4,7] };// CAT
      this.rules[95].opcodes[4] = { type: 1, children: [5,6] };// ALT
      this.rules[95].opcodes[5] = { type: 4, index: 259 };// RNM(primitiveColProperty)
      this.rules[95].opcodes[6] = { type: 4, index: 114 };// RNM(primitiveColAnnotationInQuery)
      this.rules[95].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[95].opcodes[8] = { type: 2, children: [9,10,11,15] };// CAT
      this.rules[95].opcodes[9] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[95].opcodes[10] = { type: 4, index: 97 };// RNM(selectOptionPC)
      this.rules[95].opcodes[11] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[95].opcodes[12] = { type: 2, children: [13,14] };// CAT
      this.rules[95].opcodes[13] = { type: 4, index: 394 };// RNM(SEMI)
      this.rules[95].opcodes[14] = { type: 4, index: 97 };// RNM(selectOptionPC)
      this.rules[95].opcodes[15] = { type: 4, index: 398 };// RNM(CLOSE)
      this.rules[95].opcodes[16] = { type: 4, index: 263 };// RNM(navigationProperty)
      this.rules[95].opcodes[17] = { type: 2, children: [18,19] };// CAT
      this.rules[95].opcodes[18] = { type: 4, index: 96 };// RNM(selectPath)
      this.rules[95].opcodes[19] = { type: 3, min: 0, max: 1 };// REP
      this.rules[95].opcodes[20] = { type: 1, children: [21,29] };// ALT
      this.rules[95].opcodes[21] = { type: 2, children: [22,23,24,28] };// CAT
      this.rules[95].opcodes[22] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[95].opcodes[23] = { type: 4, index: 98 };// RNM(selectOption)
      this.rules[95].opcodes[24] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[95].opcodes[25] = { type: 2, children: [26,27] };// CAT
      this.rules[95].opcodes[26] = { type: 4, index: 394 };// RNM(SEMI)
      this.rules[95].opcodes[27] = { type: 4, index: 98 };// RNM(selectOption)
      this.rules[95].opcodes[28] = { type: 4, index: 398 };// RNM(CLOSE)
      this.rules[95].opcodes[29] = { type: 2, children: [30,31] };// CAT
      this.rules[95].opcodes[30] = { type: 7, string: [47] };// TLS
      this.rules[95].opcodes[31] = { type: 4, index: 95 };// RNM(selectProperty)
    
      /* selectPath */
      this.rules[96].opcodes = [];
      this.rules[96].opcodes[0] = { type: 2, children: [1,5] };// CAT
      this.rules[96].opcodes[1] = { type: 1, children: [2,3,4] };// ALT
      this.rules[96].opcodes[2] = { type: 4, index: 260 };// RNM(complexProperty)
      this.rules[96].opcodes[3] = { type: 4, index: 261 };// RNM(complexColProperty)
      this.rules[96].opcodes[4] = { type: 4, index: 111 };// RNM(complexAnnotationInQuery)
      this.rules[96].opcodes[5] = { type: 3, min: 0, max: 1 };// REP
      this.rules[96].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[96].opcodes[7] = { type: 7, string: [47] };// TLS
      this.rules[96].opcodes[8] = { type: 4, index: 239 };// RNM(optionallyQualifiedComplexTypeName)
    
      /* selectOptionPC */
      this.rules[97].opcodes = [];
      this.rules[97].opcodes[0] = { type: 1, children: [1,2,3,4,5,6] };// ALT
      this.rules[97].opcodes[1] = { type: 4, index: 74 };// RNM(filter)
      this.rules[97].opcodes[2] = { type: 4, index: 83 };// RNM(search)
      this.rules[97].opcodes[3] = { type: 4, index: 81 };// RNM(inlinecount)
      this.rules[97].opcodes[4] = { type: 4, index: 75 };// RNM(orderby)
      this.rules[97].opcodes[5] = { type: 4, index: 77 };// RNM(skip)
      this.rules[97].opcodes[6] = { type: 4, index: 78 };// RNM(top)
    
      /* selectOption */
      this.rules[98].opcodes = [];
      this.rules[98].opcodes[0] = { type: 1, children: [1,2,3,4] };// ALT
      this.rules[98].opcodes[1] = { type: 4, index: 97 };// RNM(selectOptionPC)
      this.rules[98].opcodes[2] = { type: 4, index: 64 };// RNM(compute)
      this.rules[98].opcodes[3] = { type: 4, index: 93 };// RNM(select)
      this.rules[98].opcodes[4] = { type: 4, index: 105 };// RNM(aliasAndValue)
    
      /* allOperationsInSchema */
      this.rules[99].opcodes = [];
      this.rules[99].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[99].opcodes[1] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[99].opcodes[2] = { type: 7, string: [46] };// TLS
      this.rules[99].opcodes[3] = { type: 4, index: 395 };// RNM(STAR)
    
      /* optionallyQualifiedActionName */
      this.rules[100].opcodes = [];
      this.rules[100].opcodes[0] = { type: 2, children: [1,5] };// CAT
      this.rules[100].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[100].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[100].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[100].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[100].opcodes[5] = { type: 4, index: 266 };// RNM(action)
    
      /* optionallyQualifiedFunctionName */
      this.rules[101].opcodes = [];
      this.rules[101].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[101].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[101].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[101].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[101].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[101].opcodes[5] = { type: 4, index: 268 };// RNM(function)
      this.rules[101].opcodes[6] = { type: 3, min: 0, max: 1 };// REP
      this.rules[101].opcodes[7] = { type: 2, children: [8,9,10] };// CAT
      this.rules[101].opcodes[8] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[101].opcodes[9] = { type: 4, index: 102 };// RNM(parameterNames)
      this.rules[101].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* parameterNames */
      this.rules[102].opcodes = [];
      this.rules[102].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[102].opcodes[1] = { type: 4, index: 49 };// RNM(parameterName)
      this.rules[102].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[102].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[102].opcodes[4] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[102].opcodes[5] = { type: 4, index: 49 };// RNM(parameterName)
    
      /* deltatoken */
      this.rules[103].opcodes = [];
      this.rules[103].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[103].opcodes[1] = { type: 7, string: [36,100,101,108,116,97,116,111,107,101,110] };// TLS
      this.rules[103].opcodes[2] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[103].opcodes[3] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[103].opcodes[4] = { type: 4, index: 428 };// RNM(qchar-no-AMP)
    
      /* skiptoken */
      this.rules[104].opcodes = [];
      this.rules[104].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[104].opcodes[1] = { type: 7, string: [36,115,107,105,112,116,111,107,101,110] };// TLS
      this.rules[104].opcodes[2] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[104].opcodes[3] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[104].opcodes[4] = { type: 4, index: 428 };// RNM(qchar-no-AMP)
    
      /* aliasAndValue */
      this.rules[105].opcodes = [];
      this.rules[105].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[105].opcodes[1] = { type: 4, index: 50 };// RNM(parameterAlias)
      this.rules[105].opcodes[2] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[105].opcodes[3] = { type: 4, index: 107 };// RNM(parameterValue)
    
      /* nameAndValue */
      this.rules[106].opcodes = [];
      this.rules[106].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[106].opcodes[1] = { type: 4, index: 49 };// RNM(parameterName)
      this.rules[106].opcodes[2] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[106].opcodes[3] = { type: 4, index: 107 };// RNM(parameterValue)
    
      /* parameterValue */
      this.rules[107].opcodes = [];
      this.rules[107].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[107].opcodes[1] = { type: 4, index: 214 };// RNM(arrayOrObject)
      this.rules[107].opcodes[2] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* customQueryOption */
      this.rules[108].opcodes = [];
      this.rules[108].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[108].opcodes[1] = { type: 4, index: 109 };// RNM(customName)
      this.rules[108].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[108].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[108].opcodes[4] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[108].opcodes[5] = { type: 4, index: 110 };// RNM(customValue)
    
      /* customName */
      this.rules[109].opcodes = [];
      this.rules[109].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[109].opcodes[1] = { type: 4, index: 430 };// RNM(qchar-no-AMP-EQ-AT-DOLLAR)
      this.rules[109].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[109].opcodes[3] = { type: 4, index: 429 };// RNM(qchar-no-AMP-EQ)
    
      /* customValue */
      this.rules[110].opcodes = [];
      this.rules[110].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[110].opcodes[1] = { type: 4, index: 428 };// RNM(qchar-no-AMP)
    
      /* complexAnnotationInQuery */
      this.rules[111].opcodes = [];
      this.rules[111].opcodes[0] = { type: 4, index: 136 };// RNM(annotationInQuery)
    
      /* entityAnnotationInQuery */
      this.rules[112].opcodes = [];
      this.rules[112].opcodes[0] = { type: 4, index: 136 };// RNM(annotationInQuery)
    
      /* primitiveAnnotationInQuery */
      this.rules[113].opcodes = [];
      this.rules[113].opcodes[0] = { type: 4, index: 136 };// RNM(annotationInQuery)
    
      /* primitiveColAnnotationInQuery */
      this.rules[114].opcodes = [];
      this.rules[114].opcodes[0] = { type: 4, index: 136 };// RNM(annotationInQuery)
    
      /* context */
      this.rules[115].opcodes = [];
      this.rules[115].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[115].opcodes[1] = { type: 7, string: [35] };// TLS
      this.rules[115].opcodes[2] = { type: 4, index: 116 };// RNM(contextFragment)
    
      /* contextFragment */
      this.rules[116].opcodes = [];
      this.rules[116].opcodes[0] = { type: 1, children: [1,2,3,4,5,18,22,28,35] };// ALT
      this.rules[116].opcodes[1] = { type: 6, string: [67,111,108,108,101,99,116,105,111,110,40,36,114,101,102,41] };// TBS
      this.rules[116].opcodes[2] = { type: 6, string: [36,114,101,102] };// TBS
      this.rules[116].opcodes[3] = { type: 6, string: [67,111,108,108,101,99,116,105,111,110,40,69,100,109,46,69,110,116,105,116,121,84,121,112,101,41] };// TBS
      this.rules[116].opcodes[4] = { type: 6, string: [67,111,108,108,101,99,116,105,111,110,40,69,100,109,46,67,111,109,112,108,101,120,84,121,112,101,41] };// TBS
      this.rules[116].opcodes[5] = { type: 2, children: [6,7,16] };// CAT
      this.rules[116].opcodes[6] = { type: 4, index: 243 };// RNM(singletonEntity)
      this.rules[116].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[116].opcodes[8] = { type: 2, children: [9,10,12] };// CAT
      this.rules[116].opcodes[9] = { type: 4, index: 119 };// RNM(navigation)
      this.rules[116].opcodes[10] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[116].opcodes[11] = { type: 4, index: 118 };// RNM(containmentNavigation)
      this.rules[116].opcodes[12] = { type: 3, min: 0, max: 1 };// REP
      this.rules[116].opcodes[13] = { type: 2, children: [14,15] };// CAT
      this.rules[116].opcodes[14] = { type: 7, string: [47] };// TLS
      this.rules[116].opcodes[15] = { type: 4, index: 234 };// RNM(qualifiedEntityTypeName)
      this.rules[116].opcodes[16] = { type: 3, min: 0, max: 1 };// REP
      this.rules[116].opcodes[17] = { type: 4, index: 120 };// RNM(selectList)
      this.rules[116].opcodes[18] = { type: 2, children: [19,20] };// CAT
      this.rules[116].opcodes[19] = { type: 4, index: 230 };// RNM(qualifiedTypeName)
      this.rules[116].opcodes[20] = { type: 3, min: 0, max: 1 };// REP
      this.rules[116].opcodes[21] = { type: 4, index: 120 };// RNM(selectList)
      this.rules[116].opcodes[22] = { type: 2, children: [23,24] };// CAT
      this.rules[116].opcodes[23] = { type: 4, index: 117 };// RNM(entitySet)
      this.rules[116].opcodes[24] = { type: 1, children: [25,26,27] };// ALT
      this.rules[116].opcodes[25] = { type: 6, string: [47,36,100,101,108,101,116,101,100,69,110,116,105,116,121] };// TBS
      this.rules[116].opcodes[26] = { type: 6, string: [47,36,108,105,110,107] };// TBS
      this.rules[116].opcodes[27] = { type: 6, string: [47,36,100,101,108,101,116,101,100,76,105,110,107] };// TBS
      this.rules[116].opcodes[28] = { type: 2, children: [29,30,31,32,33] };// CAT
      this.rules[116].opcodes[29] = { type: 4, index: 117 };// RNM(entitySet)
      this.rules[116].opcodes[30] = { type: 4, index: 7 };// RNM(keyPredicate)
      this.rules[116].opcodes[31] = { type: 7, string: [47] };// TLS
      this.rules[116].opcodes[32] = { type: 4, index: 123 };// RNM(contextPropertyPath)
      this.rules[116].opcodes[33] = { type: 3, min: 0, max: 1 };// REP
      this.rules[116].opcodes[34] = { type: 4, index: 120 };// RNM(selectList)
      this.rules[116].opcodes[35] = { type: 2, children: [36,37,39] };// CAT
      this.rules[116].opcodes[36] = { type: 4, index: 117 };// RNM(entitySet)
      this.rules[116].opcodes[37] = { type: 3, min: 0, max: 1 };// REP
      this.rules[116].opcodes[38] = { type: 4, index: 120 };// RNM(selectList)
      this.rules[116].opcodes[39] = { type: 3, min: 0, max: 1 };// REP
      this.rules[116].opcodes[40] = { type: 1, children: [41,42] };// ALT
      this.rules[116].opcodes[41] = { type: 6, string: [47,36,101,110,116,105,116,121] };// TBS
      this.rules[116].opcodes[42] = { type: 6, string: [47,36,100,101,108,116,97] };// TBS
    
      /* entitySet */
      this.rules[117].opcodes = [];
      this.rules[117].opcodes[0] = { type: 2, children: [1,2,4] };// CAT
      this.rules[117].opcodes[1] = { type: 4, index: 242 };// RNM(entitySetName)
      this.rules[117].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[117].opcodes[3] = { type: 4, index: 118 };// RNM(containmentNavigation)
      this.rules[117].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[117].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[117].opcodes[6] = { type: 7, string: [47] };// TLS
      this.rules[117].opcodes[7] = { type: 4, index: 234 };// RNM(qualifiedEntityTypeName)
    
      /* containmentNavigation */
      this.rules[118].opcodes = [];
      this.rules[118].opcodes[0] = { type: 2, children: [1,2,6] };// CAT
      this.rules[118].opcodes[1] = { type: 4, index: 7 };// RNM(keyPredicate)
      this.rules[118].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[118].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[118].opcodes[4] = { type: 7, string: [47] };// TLS
      this.rules[118].opcodes[5] = { type: 4, index: 234 };// RNM(qualifiedEntityTypeName)
      this.rules[118].opcodes[6] = { type: 4, index: 119 };// RNM(navigation)
    
      /* navigation */
      this.rules[119].opcodes = [];
      this.rules[119].opcodes[0] = { type: 2, children: [1,9,10] };// CAT
      this.rules[119].opcodes[1] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[119].opcodes[2] = { type: 2, children: [3,4,5] };// CAT
      this.rules[119].opcodes[3] = { type: 7, string: [47] };// TLS
      this.rules[119].opcodes[4] = { type: 4, index: 260 };// RNM(complexProperty)
      this.rules[119].opcodes[5] = { type: 3, min: 0, max: 1 };// REP
      this.rules[119].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[119].opcodes[7] = { type: 7, string: [47] };// TLS
      this.rules[119].opcodes[8] = { type: 4, index: 235 };// RNM(qualifiedComplexTypeName)
      this.rules[119].opcodes[9] = { type: 7, string: [47] };// TLS
      this.rules[119].opcodes[10] = { type: 4, index: 263 };// RNM(navigationProperty)
    
      /* selectList */
      this.rules[120].opcodes = [];
      this.rules[120].opcodes[0] = { type: 2, children: [1,2,9] };// CAT
      this.rules[120].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[120].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[120].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[120].opcodes[4] = { type: 4, index: 121 };// RNM(selectListItem)
      this.rules[120].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[120].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[120].opcodes[7] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[120].opcodes[8] = { type: 4, index: 121 };// RNM(selectListItem)
      this.rules[120].opcodes[9] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* selectListItem */
      this.rules[121].opcodes = [];
      this.rules[121].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[121].opcodes[1] = { type: 4, index: 395 };// RNM(STAR)
      this.rules[121].opcodes[2] = { type: 4, index: 99 };// RNM(allOperationsInSchema)
      this.rules[121].opcodes[3] = { type: 2, children: [4,10] };// CAT
      this.rules[121].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[121].opcodes[5] = { type: 2, children: [6,9] };// CAT
      this.rules[121].opcodes[6] = { type: 1, children: [7,8] };// ALT
      this.rules[121].opcodes[7] = { type: 4, index: 234 };// RNM(qualifiedEntityTypeName)
      this.rules[121].opcodes[8] = { type: 4, index: 235 };// RNM(qualifiedComplexTypeName)
      this.rules[121].opcodes[9] = { type: 7, string: [47] };// TLS
      this.rules[121].opcodes[10] = { type: 1, children: [11,12,13] };// ALT
      this.rules[121].opcodes[11] = { type: 4, index: 124 };// RNM(qualifiedActionName)
      this.rules[121].opcodes[12] = { type: 4, index: 125 };// RNM(qualifiedFunctionName)
      this.rules[121].opcodes[13] = { type: 4, index: 122 };// RNM(selectListProperty)
    
      /* selectListProperty */
      this.rules[122].opcodes = [];
      this.rules[122].opcodes[0] = { type: 1, children: [1,2,3,11] };// ALT
      this.rules[122].opcodes[1] = { type: 4, index: 256 };// RNM(primitiveProperty)
      this.rules[122].opcodes[2] = { type: 4, index: 259 };// RNM(primitiveColProperty)
      this.rules[122].opcodes[3] = { type: 2, children: [4,7,9] };// CAT
      this.rules[122].opcodes[4] = { type: 1, children: [5,6] };// ALT
      this.rules[122].opcodes[5] = { type: 4, index: 263 };// RNM(navigationProperty)
      this.rules[122].opcodes[6] = { type: 4, index: 127 };// RNM(entityAnnotationInFragment)
      this.rules[122].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[122].opcodes[8] = { type: 7, string: [43] };// TLS
      this.rules[122].opcodes[9] = { type: 3, min: 0, max: 1 };// REP
      this.rules[122].opcodes[10] = { type: 4, index: 120 };// RNM(selectList)
      this.rules[122].opcodes[11] = { type: 2, children: [12,16,20] };// CAT
      this.rules[122].opcodes[12] = { type: 1, children: [13,14,15] };// ALT
      this.rules[122].opcodes[13] = { type: 4, index: 260 };// RNM(complexProperty)
      this.rules[122].opcodes[14] = { type: 4, index: 261 };// RNM(complexColProperty)
      this.rules[122].opcodes[15] = { type: 4, index: 126 };// RNM(complexAnnotationInFragment)
      this.rules[122].opcodes[16] = { type: 3, min: 0, max: 1 };// REP
      this.rules[122].opcodes[17] = { type: 2, children: [18,19] };// CAT
      this.rules[122].opcodes[18] = { type: 7, string: [47] };// TLS
      this.rules[122].opcodes[19] = { type: 4, index: 235 };// RNM(qualifiedComplexTypeName)
      this.rules[122].opcodes[20] = { type: 3, min: 0, max: 1 };// REP
      this.rules[122].opcodes[21] = { type: 2, children: [22,23] };// CAT
      this.rules[122].opcodes[22] = { type: 7, string: [47] };// TLS
      this.rules[122].opcodes[23] = { type: 4, index: 122 };// RNM(selectListProperty)
    
      /* contextPropertyPath */
      this.rules[123].opcodes = [];
      this.rules[123].opcodes[0] = { type: 1, children: [1,2,3,4] };// ALT
      this.rules[123].opcodes[1] = { type: 4, index: 256 };// RNM(primitiveProperty)
      this.rules[123].opcodes[2] = { type: 4, index: 259 };// RNM(primitiveColProperty)
      this.rules[123].opcodes[3] = { type: 4, index: 261 };// RNM(complexColProperty)
      this.rules[123].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[123].opcodes[5] = { type: 4, index: 260 };// RNM(complexProperty)
      this.rules[123].opcodes[6] = { type: 3, min: 0, max: 1 };// REP
      this.rules[123].opcodes[7] = { type: 2, children: [8,12,13] };// CAT
      this.rules[123].opcodes[8] = { type: 3, min: 0, max: 1 };// REP
      this.rules[123].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[123].opcodes[10] = { type: 7, string: [47] };// TLS
      this.rules[123].opcodes[11] = { type: 4, index: 235 };// RNM(qualifiedComplexTypeName)
      this.rules[123].opcodes[12] = { type: 7, string: [47] };// TLS
      this.rules[123].opcodes[13] = { type: 4, index: 123 };// RNM(contextPropertyPath)
    
      /* qualifiedActionName */
      this.rules[124].opcodes = [];
      this.rules[124].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[124].opcodes[1] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[124].opcodes[2] = { type: 7, string: [46] };// TLS
      this.rules[124].opcodes[3] = { type: 4, index: 266 };// RNM(action)
    
      /* qualifiedFunctionName */
      this.rules[125].opcodes = [];
      this.rules[125].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[125].opcodes[1] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[125].opcodes[2] = { type: 7, string: [46] };// TLS
      this.rules[125].opcodes[3] = { type: 4, index: 268 };// RNM(function)
      this.rules[125].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[125].opcodes[5] = { type: 2, children: [6,7,8] };// CAT
      this.rules[125].opcodes[6] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[125].opcodes[7] = { type: 4, index: 102 };// RNM(parameterNames)
      this.rules[125].opcodes[8] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* complexAnnotationInFragment */
      this.rules[126].opcodes = [];
      this.rules[126].opcodes[0] = { type: 4, index: 137 };// RNM(annotationInFragment)
    
      /* entityAnnotationInFragment */
      this.rules[127].opcodes = [];
      this.rules[127].opcodes[0] = { type: 4, index: 137 };// RNM(annotationInFragment)
    
      /* commonExpr */
      this.rules[128].opcodes = [];
      this.rules[128].opcodes[0] = { type: 2, children: [1,13,21,31] };// CAT
      this.rules[128].opcodes[1] = { type: 1, children: [2,3,4,5,6,7,8,9,10,11,12] };// ALT
      this.rules[128].opcodes[2] = { type: 4, index: 281 };// RNM(primitiveLiteral)
      this.rules[128].opcodes[3] = { type: 4, index: 214 };// RNM(arrayOrObject)
      this.rules[128].opcodes[4] = { type: 4, index: 130 };// RNM(rootExpr)
      this.rules[128].opcodes[5] = { type: 4, index: 131 };// RNM(firstMemberExpr)
      this.rules[128].opcodes[6] = { type: 4, index: 150 };// RNM(functionExpr)
      this.rules[128].opcodes[7] = { type: 4, index: 210 };// RNM(negateExpr)
      this.rules[128].opcodes[8] = { type: 4, index: 156 };// RNM(methodCallExpr)
      this.rules[128].opcodes[9] = { type: 4, index: 192 };// RNM(parenExpr)
      this.rules[128].opcodes[10] = { type: 4, index: 213 };// RNM(castExpr)
      this.rules[128].opcodes[11] = { type: 4, index: 212 };// RNM(isofExpr)
      this.rules[128].opcodes[12] = { type: 4, index: 211 };// RNM(notExpr)
      this.rules[128].opcodes[13] = { type: 3, min: 0, max: 1 };// REP
      this.rules[128].opcodes[14] = { type: 1, children: [15,16,17,18,19,20] };// ALT
      this.rules[128].opcodes[15] = { type: 4, index: 204 };// RNM(addExpr)
      this.rules[128].opcodes[16] = { type: 4, index: 205 };// RNM(subExpr)
      this.rules[128].opcodes[17] = { type: 4, index: 206 };// RNM(mulExpr)
      this.rules[128].opcodes[18] = { type: 4, index: 207 };// RNM(divExpr)
      this.rules[128].opcodes[19] = { type: 4, index: 208 };// RNM(divbyExpr)
      this.rules[128].opcodes[20] = { type: 4, index: 209 };// RNM(modExpr)
      this.rules[128].opcodes[21] = { type: 3, min: 0, max: 1 };// REP
      this.rules[128].opcodes[22] = { type: 1, children: [23,24,25,26,27,28,29,30] };// ALT
      this.rules[128].opcodes[23] = { type: 4, index: 196 };// RNM(eqExpr)
      this.rules[128].opcodes[24] = { type: 4, index: 197 };// RNM(neExpr)
      this.rules[128].opcodes[25] = { type: 4, index: 198 };// RNM(ltExpr)
      this.rules[128].opcodes[26] = { type: 4, index: 199 };// RNM(leExpr)
      this.rules[128].opcodes[27] = { type: 4, index: 200 };// RNM(gtExpr)
      this.rules[128].opcodes[28] = { type: 4, index: 201 };// RNM(geExpr)
      this.rules[128].opcodes[29] = { type: 4, index: 203 };// RNM(hasExpr)
      this.rules[128].opcodes[30] = { type: 4, index: 202 };// RNM(inExpr)
      this.rules[128].opcodes[31] = { type: 3, min: 0, max: 1 };// REP
      this.rules[128].opcodes[32] = { type: 1, children: [33,34] };// ALT
      this.rules[128].opcodes[33] = { type: 4, index: 194 };// RNM(andExpr)
      this.rules[128].opcodes[34] = { type: 4, index: 195 };// RNM(orExpr)
    
      /* boolCommonExpr */
      this.rules[129].opcodes = [];
      this.rules[129].opcodes[0] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* rootExpr */
      this.rules[130].opcodes = [];
      this.rules[130].opcodes[0] = { type: 2, children: [1,2,7] };// CAT
      this.rules[130].opcodes[1] = { type: 6, string: [36,114,111,111,116,47] };// TBS
      this.rules[130].opcodes[2] = { type: 1, children: [3,6] };// ALT
      this.rules[130].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[130].opcodes[4] = { type: 4, index: 242 };// RNM(entitySetName)
      this.rules[130].opcodes[5] = { type: 4, index: 7 };// RNM(keyPredicate)
      this.rules[130].opcodes[6] = { type: 4, index: 243 };// RNM(singletonEntity)
      this.rules[130].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[130].opcodes[8] = { type: 4, index: 143 };// RNM(singleNavigationExpr)
    
      /* firstMemberExpr */
      this.rules[131].opcodes = [];
      this.rules[131].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[131].opcodes[1] = { type: 4, index: 132 };// RNM(memberExpr)
      this.rules[131].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[131].opcodes[3] = { type: 4, index: 139 };// RNM(inscopeVariableExpr)
      this.rules[131].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[131].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[131].opcodes[6] = { type: 7, string: [47] };// TLS
      this.rules[131].opcodes[7] = { type: 4, index: 132 };// RNM(memberExpr)
    
      /* memberExpr */
      this.rules[132].opcodes = [];
      this.rules[132].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[132].opcodes[1] = { type: 4, index: 133 };// RNM(directMemberExpr)
      this.rules[132].opcodes[2] = { type: 2, children: [3,6,7] };// CAT
      this.rules[132].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[132].opcodes[4] = { type: 4, index: 238 };// RNM(optionallyQualifiedEntityTypeName)
      this.rules[132].opcodes[5] = { type: 4, index: 239 };// RNM(optionallyQualifiedComplexTypeName)
      this.rules[132].opcodes[6] = { type: 7, string: [47] };// TLS
      this.rules[132].opcodes[7] = { type: 4, index: 133 };// RNM(directMemberExpr)
    
      /* directMemberExpr */
      this.rules[133].opcodes = [];
      this.rules[133].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[133].opcodes[1] = { type: 4, index: 134 };// RNM(propertyPathExpr)
      this.rules[133].opcodes[2] = { type: 4, index: 149 };// RNM(boundFunctionExpr)
      this.rules[133].opcodes[3] = { type: 4, index: 135 };// RNM(annotationExpr)
    
      /* propertyPathExpr */
      this.rules[134].opcodes = [];
      this.rules[134].opcodes[0] = { type: 1, children: [1,5,9,13,17,21,25] };// ALT
      this.rules[134].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[134].opcodes[2] = { type: 4, index: 265 };// RNM(entityColNavigationProperty)
      this.rules[134].opcodes[3] = { type: 3, min: 0, max: 1 };// REP
      this.rules[134].opcodes[4] = { type: 4, index: 142 };// RNM(collectionNavigationExpr)
      this.rules[134].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[134].opcodes[6] = { type: 4, index: 264 };// RNM(entityNavigationProperty)
      this.rules[134].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[134].opcodes[8] = { type: 4, index: 143 };// RNM(singleNavigationExpr)
      this.rules[134].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[134].opcodes[10] = { type: 4, index: 261 };// RNM(complexColProperty)
      this.rules[134].opcodes[11] = { type: 3, min: 0, max: 1 };// REP
      this.rules[134].opcodes[12] = { type: 4, index: 145 };// RNM(complexColPathExpr)
      this.rules[134].opcodes[13] = { type: 2, children: [14,15] };// CAT
      this.rules[134].opcodes[14] = { type: 4, index: 260 };// RNM(complexProperty)
      this.rules[134].opcodes[15] = { type: 3, min: 0, max: 1 };// REP
      this.rules[134].opcodes[16] = { type: 4, index: 147 };// RNM(complexPathExpr)
      this.rules[134].opcodes[17] = { type: 2, children: [18,19] };// CAT
      this.rules[134].opcodes[18] = { type: 4, index: 259 };// RNM(primitiveColProperty)
      this.rules[134].opcodes[19] = { type: 3, min: 0, max: 1 };// REP
      this.rules[134].opcodes[20] = { type: 4, index: 146 };// RNM(collectionPathExpr)
      this.rules[134].opcodes[21] = { type: 2, children: [22,23] };// CAT
      this.rules[134].opcodes[22] = { type: 4, index: 256 };// RNM(primitiveProperty)
      this.rules[134].opcodes[23] = { type: 3, min: 0, max: 1 };// REP
      this.rules[134].opcodes[24] = { type: 4, index: 148 };// RNM(primitivePathExpr)
      this.rules[134].opcodes[25] = { type: 2, children: [26,27] };// CAT
      this.rules[134].opcodes[26] = { type: 4, index: 262 };// RNM(streamProperty)
      this.rules[134].opcodes[27] = { type: 3, min: 0, max: 1 };// REP
      this.rules[134].opcodes[28] = { type: 4, index: 148 };// RNM(primitivePathExpr)
    
      /* annotationExpr */
      this.rules[135].opcodes = [];
      this.rules[135].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[135].opcodes[1] = { type: 4, index: 136 };// RNM(annotationInQuery)
      this.rules[135].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[135].opcodes[3] = { type: 1, children: [4,5,6,7] };// ALT
      this.rules[135].opcodes[4] = { type: 4, index: 146 };// RNM(collectionPathExpr)
      this.rules[135].opcodes[5] = { type: 4, index: 143 };// RNM(singleNavigationExpr)
      this.rules[135].opcodes[6] = { type: 4, index: 147 };// RNM(complexPathExpr)
      this.rules[135].opcodes[7] = { type: 4, index: 148 };// RNM(primitivePathExpr)
    
      /* annotationInQuery */
      this.rules[136].opcodes = [];
      this.rules[136].opcodes[0] = { type: 2, children: [1,2,6,7] };// CAT
      this.rules[136].opcodes[1] = { type: 4, index: 388 };// RNM(AT)
      this.rules[136].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[136].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[136].opcodes[4] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[136].opcodes[5] = { type: 7, string: [46] };// TLS
      this.rules[136].opcodes[6] = { type: 4, index: 249 };// RNM(termName)
      this.rules[136].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[136].opcodes[8] = { type: 2, children: [9,10] };// CAT
      this.rules[136].opcodes[9] = { type: 4, index: 392 };// RNM(HASH)
      this.rules[136].opcodes[10] = { type: 4, index: 138 };// RNM(annotationQualifier)
    
      /* annotationInFragment */
      this.rules[137].opcodes = [];
      this.rules[137].opcodes[0] = { type: 2, children: [1,2,6,7] };// CAT
      this.rules[137].opcodes[1] = { type: 4, index: 388 };// RNM(AT)
      this.rules[137].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[137].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[137].opcodes[4] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[137].opcodes[5] = { type: 7, string: [46] };// TLS
      this.rules[137].opcodes[6] = { type: 4, index: 249 };// RNM(termName)
      this.rules[137].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[137].opcodes[8] = { type: 2, children: [9,10] };// CAT
      this.rules[137].opcodes[9] = { type: 7, string: [35] };// TLS
      this.rules[137].opcodes[10] = { type: 4, index: 138 };// RNM(annotationQualifier)
    
      /* annotationQualifier */
      this.rules[138].opcodes = [];
      this.rules[138].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* inscopeVariableExpr */
      this.rules[139].opcodes = [];
      this.rules[139].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[139].opcodes[1] = { type: 4, index: 140 };// RNM(implicitVariableExpr)
      this.rules[139].opcodes[2] = { type: 4, index: 50 };// RNM(parameterAlias)
      this.rules[139].opcodes[3] = { type: 4, index: 141 };// RNM(lambdaVariableExpr)
    
      /* implicitVariableExpr */
      this.rules[140].opcodes = [];
      this.rules[140].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[140].opcodes[1] = { type: 6, string: [36,105,116] };// TBS
      this.rules[140].opcodes[2] = { type: 6, string: [36,116,104,105,115] };// TBS
    
      /* lambdaVariableExpr */
      this.rules[141].opcodes = [];
      this.rules[141].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* collectionNavigationExpr */
      this.rules[142].opcodes = [];
      this.rules[142].opcodes[0] = { type: 2, children: [1,5] };// CAT
      this.rules[142].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[142].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[142].opcodes[3] = { type: 7, string: [47] };// TLS
      this.rules[142].opcodes[4] = { type: 4, index: 238 };// RNM(optionallyQualifiedEntityTypeName)
      this.rules[142].opcodes[5] = { type: 1, children: [6,7,11] };// ALT
      this.rules[142].opcodes[6] = { type: 4, index: 146 };// RNM(collectionPathExpr)
      this.rules[142].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[142].opcodes[8] = { type: 4, index: 7 };// RNM(keyPredicate)
      this.rules[142].opcodes[9] = { type: 3, min: 0, max: 1 };// REP
      this.rules[142].opcodes[10] = { type: 4, index: 143 };// RNM(singleNavigationExpr)
      this.rules[142].opcodes[11] = { type: 2, children: [12,13] };// CAT
      this.rules[142].opcodes[12] = { type: 4, index: 144 };// RNM(filterExpr)
      this.rules[142].opcodes[13] = { type: 3, min: 0, max: 1 };// REP
      this.rules[142].opcodes[14] = { type: 4, index: 142 };// RNM(collectionNavigationExpr)
    
      /* singleNavigationExpr */
      this.rules[143].opcodes = [];
      this.rules[143].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[143].opcodes[1] = { type: 7, string: [47] };// TLS
      this.rules[143].opcodes[2] = { type: 4, index: 132 };// RNM(memberExpr)
    
      /* filterExpr */
      this.rules[144].opcodes = [];
      this.rules[144].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[144].opcodes[1] = { type: 6, string: [47,36,102,105,108,116,101,114] };// TBS
      this.rules[144].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[144].opcodes[3] = { type: 4, index: 129 };// RNM(boolCommonExpr)
      this.rules[144].opcodes[4] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* complexColPathExpr */
      this.rules[145].opcodes = [];
      this.rules[145].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[145].opcodes[1] = { type: 4, index: 146 };// RNM(collectionPathExpr)
      this.rules[145].opcodes[2] = { type: 2, children: [3,4,5] };// CAT
      this.rules[145].opcodes[3] = { type: 7, string: [47] };// TLS
      this.rules[145].opcodes[4] = { type: 4, index: 239 };// RNM(optionallyQualifiedComplexTypeName)
      this.rules[145].opcodes[5] = { type: 3, min: 0, max: 1 };// REP
      this.rules[145].opcodes[6] = { type: 4, index: 146 };// RNM(collectionPathExpr)
    
      /* collectionPathExpr */
      this.rules[146].opcodes = [];
      this.rules[146].opcodes[0] = { type: 1, children: [1,12,16,19,22,25] };// ALT
      this.rules[146].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[146].opcodes[2] = { type: 4, index: 25 };// RNM(count)
      this.rules[146].opcodes[3] = { type: 3, min: 0, max: 1 };// REP
      this.rules[146].opcodes[4] = { type: 2, children: [5,6,7,11] };// CAT
      this.rules[146].opcodes[5] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[146].opcodes[6] = { type: 4, index: 70 };// RNM(expandCountOption)
      this.rules[146].opcodes[7] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[146].opcodes[8] = { type: 2, children: [9,10] };// CAT
      this.rules[146].opcodes[9] = { type: 4, index: 394 };// RNM(SEMI)
      this.rules[146].opcodes[10] = { type: 4, index: 70 };// RNM(expandCountOption)
      this.rules[146].opcodes[11] = { type: 4, index: 398 };// RNM(CLOSE)
      this.rules[146].opcodes[12] = { type: 2, children: [13,14] };// CAT
      this.rules[146].opcodes[13] = { type: 4, index: 144 };// RNM(filterExpr)
      this.rules[146].opcodes[14] = { type: 3, min: 0, max: 1 };// REP
      this.rules[146].opcodes[15] = { type: 4, index: 146 };// RNM(collectionPathExpr)
      this.rules[146].opcodes[16] = { type: 2, children: [17,18] };// CAT
      this.rules[146].opcodes[17] = { type: 7, string: [47] };// TLS
      this.rules[146].opcodes[18] = { type: 4, index: 153 };// RNM(anyExpr)
      this.rules[146].opcodes[19] = { type: 2, children: [20,21] };// CAT
      this.rules[146].opcodes[20] = { type: 7, string: [47] };// TLS
      this.rules[146].opcodes[21] = { type: 4, index: 154 };// RNM(allExpr)
      this.rules[146].opcodes[22] = { type: 2, children: [23,24] };// CAT
      this.rules[146].opcodes[23] = { type: 7, string: [47] };// TLS
      this.rules[146].opcodes[24] = { type: 4, index: 149 };// RNM(boundFunctionExpr)
      this.rules[146].opcodes[25] = { type: 2, children: [26,27] };// CAT
      this.rules[146].opcodes[26] = { type: 7, string: [47] };// TLS
      this.rules[146].opcodes[27] = { type: 4, index: 135 };// RNM(annotationExpr)
    
      /* complexPathExpr */
      this.rules[147].opcodes = [];
      this.rules[147].opcodes[0] = { type: 1, children: [1,4] };// ALT
      this.rules[147].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[147].opcodes[2] = { type: 7, string: [47] };// TLS
      this.rules[147].opcodes[3] = { type: 4, index: 133 };// RNM(directMemberExpr)
      this.rules[147].opcodes[4] = { type: 2, children: [5,6,7] };// CAT
      this.rules[147].opcodes[5] = { type: 7, string: [47] };// TLS
      this.rules[147].opcodes[6] = { type: 4, index: 239 };// RNM(optionallyQualifiedComplexTypeName)
      this.rules[147].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[147].opcodes[8] = { type: 2, children: [9,10] };// CAT
      this.rules[147].opcodes[9] = { type: 7, string: [47] };// TLS
      this.rules[147].opcodes[10] = { type: 4, index: 133 };// RNM(directMemberExpr)
    
      /* primitivePathExpr */
      this.rules[148].opcodes = [];
      this.rules[148].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[148].opcodes[1] = { type: 7, string: [47] };// TLS
      this.rules[148].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[148].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[148].opcodes[4] = { type: 4, index: 135 };// RNM(annotationExpr)
      this.rules[148].opcodes[5] = { type: 4, index: 149 };// RNM(boundFunctionExpr)
    
      /* boundFunctionExpr */
      this.rules[149].opcodes = [];
      this.rules[149].opcodes[0] = { type: 4, index: 150 };// RNM(functionExpr)
    
      /* functionExpr */
      this.rules[150].opcodes = [];
      this.rules[150].opcodes[0] = { type: 2, children: [1,5] };// CAT
      this.rules[150].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[150].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[150].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[150].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[150].opcodes[5] = { type: 1, children: [6,11,16,21,26,31] };// ALT
      this.rules[150].opcodes[6] = { type: 2, children: [7,8,9] };// CAT
      this.rules[150].opcodes[7] = { type: 4, index: 270 };// RNM(entityColFunction)
      this.rules[150].opcodes[8] = { type: 4, index: 151 };// RNM(functionExprParameters)
      this.rules[150].opcodes[9] = { type: 3, min: 0, max: 1 };// REP
      this.rules[150].opcodes[10] = { type: 4, index: 142 };// RNM(collectionNavigationExpr)
      this.rules[150].opcodes[11] = { type: 2, children: [12,13,14] };// CAT
      this.rules[150].opcodes[12] = { type: 4, index: 269 };// RNM(entityFunction)
      this.rules[150].opcodes[13] = { type: 4, index: 151 };// RNM(functionExprParameters)
      this.rules[150].opcodes[14] = { type: 3, min: 0, max: 1 };// REP
      this.rules[150].opcodes[15] = { type: 4, index: 143 };// RNM(singleNavigationExpr)
      this.rules[150].opcodes[16] = { type: 2, children: [17,18,19] };// CAT
      this.rules[150].opcodes[17] = { type: 4, index: 272 };// RNM(complexColFunction)
      this.rules[150].opcodes[18] = { type: 4, index: 151 };// RNM(functionExprParameters)
      this.rules[150].opcodes[19] = { type: 3, min: 0, max: 1 };// REP
      this.rules[150].opcodes[20] = { type: 4, index: 145 };// RNM(complexColPathExpr)
      this.rules[150].opcodes[21] = { type: 2, children: [22,23,24] };// CAT
      this.rules[150].opcodes[22] = { type: 4, index: 271 };// RNM(complexFunction)
      this.rules[150].opcodes[23] = { type: 4, index: 151 };// RNM(functionExprParameters)
      this.rules[150].opcodes[24] = { type: 3, min: 0, max: 1 };// REP
      this.rules[150].opcodes[25] = { type: 4, index: 147 };// RNM(complexPathExpr)
      this.rules[150].opcodes[26] = { type: 2, children: [27,28,29] };// CAT
      this.rules[150].opcodes[27] = { type: 4, index: 274 };// RNM(primitiveColFunction)
      this.rules[150].opcodes[28] = { type: 4, index: 151 };// RNM(functionExprParameters)
      this.rules[150].opcodes[29] = { type: 3, min: 0, max: 1 };// REP
      this.rules[150].opcodes[30] = { type: 4, index: 146 };// RNM(collectionPathExpr)
      this.rules[150].opcodes[31] = { type: 2, children: [32,33,34] };// CAT
      this.rules[150].opcodes[32] = { type: 4, index: 273 };// RNM(primitiveFunction)
      this.rules[150].opcodes[33] = { type: 4, index: 151 };// RNM(functionExprParameters)
      this.rules[150].opcodes[34] = { type: 3, min: 0, max: 1 };// REP
      this.rules[150].opcodes[35] = { type: 4, index: 148 };// RNM(primitivePathExpr)
    
      /* functionExprParameters */
      this.rules[151].opcodes = [];
      this.rules[151].opcodes[0] = { type: 2, children: [1,2,9] };// CAT
      this.rules[151].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[151].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[151].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[151].opcodes[4] = { type: 4, index: 152 };// RNM(functionExprParameter)
      this.rules[151].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[151].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[151].opcodes[7] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[151].opcodes[8] = { type: 4, index: 152 };// RNM(functionExprParameter)
      this.rules[151].opcodes[9] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* functionExprParameter */
      this.rules[152].opcodes = [];
      this.rules[152].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[152].opcodes[1] = { type: 4, index: 49 };// RNM(parameterName)
      this.rules[152].opcodes[2] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[152].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[152].opcodes[4] = { type: 4, index: 50 };// RNM(parameterAlias)
      this.rules[152].opcodes[5] = { type: 4, index: 107 };// RNM(parameterValue)
    
      /* anyExpr */
      this.rules[153].opcodes = [];
      this.rules[153].opcodes[0] = { type: 2, children: [1,2,3,4,11,12] };// CAT
      this.rules[153].opcodes[1] = { type: 7, string: [97,110,121] };// TLS
      this.rules[153].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[153].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[153].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[153].opcodes[5] = { type: 2, children: [6,7,8,9,10] };// CAT
      this.rules[153].opcodes[6] = { type: 4, index: 141 };// RNM(lambdaVariableExpr)
      this.rules[153].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[153].opcodes[8] = { type: 4, index: 389 };// RNM(COLON)
      this.rules[153].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[153].opcodes[10] = { type: 4, index: 155 };// RNM(lambdaPredicateExpr)
      this.rules[153].opcodes[11] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[153].opcodes[12] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* allExpr */
      this.rules[154].opcodes = [];
      this.rules[154].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[154].opcodes[1] = { type: 7, string: [97,108,108] };// TLS
      this.rules[154].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[154].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[154].opcodes[4] = { type: 4, index: 141 };// RNM(lambdaVariableExpr)
      this.rules[154].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[154].opcodes[6] = { type: 4, index: 389 };// RNM(COLON)
      this.rules[154].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[154].opcodes[8] = { type: 4, index: 155 };// RNM(lambdaPredicateExpr)
      this.rules[154].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[154].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* lambdaPredicateExpr */
      this.rules[155].opcodes = [];
      this.rules[155].opcodes[0] = { type: 4, index: 129 };// RNM(boolCommonExpr)
    
      /* methodCallExpr */
      this.rules[156].opcodes = [];
      this.rules[156].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29] };// ALT
      this.rules[156].opcodes[1] = { type: 4, index: 161 };// RNM(indexOfMethodCallExpr)
      this.rules[156].opcodes[2] = { type: 4, index: 166 };// RNM(toLowerMethodCallExpr)
      this.rules[156].opcodes[3] = { type: 4, index: 167 };// RNM(toUpperMethodCallExpr)
      this.rules[156].opcodes[4] = { type: 4, index: 168 };// RNM(trimMethodCallExpr)
      this.rules[156].opcodes[5] = { type: 4, index: 165 };// RNM(substringMethodCallExpr)
      this.rules[156].opcodes[6] = { type: 4, index: 158 };// RNM(concatMethodCallExpr)
      this.rules[156].opcodes[7] = { type: 4, index: 162 };// RNM(lengthMethodCallExpr)
      this.rules[156].opcodes[8] = { type: 4, index: 163 };// RNM(matchesPatternMethodCallExpr)
      this.rules[156].opcodes[9] = { type: 4, index: 169 };// RNM(yearMethodCallExpr)
      this.rules[156].opcodes[10] = { type: 4, index: 170 };// RNM(monthMethodCallExpr)
      this.rules[156].opcodes[11] = { type: 4, index: 171 };// RNM(dayMethodCallExpr)
      this.rules[156].opcodes[12] = { type: 4, index: 172 };// RNM(hourMethodCallExpr)
      this.rules[156].opcodes[13] = { type: 4, index: 173 };// RNM(minuteMethodCallExpr)
      this.rules[156].opcodes[14] = { type: 4, index: 174 };// RNM(secondMethodCallExpr)
      this.rules[156].opcodes[15] = { type: 4, index: 175 };// RNM(fractionalsecondsMethodCallExpr)
      this.rules[156].opcodes[16] = { type: 4, index: 176 };// RNM(totalsecondsMethodCallExpr)
      this.rules[156].opcodes[17] = { type: 4, index: 177 };// RNM(dateMethodCallExpr)
      this.rules[156].opcodes[18] = { type: 4, index: 178 };// RNM(timeMethodCallExpr)
      this.rules[156].opcodes[19] = { type: 4, index: 183 };// RNM(roundMethodCallExpr)
      this.rules[156].opcodes[20] = { type: 4, index: 184 };// RNM(floorMethodCallExpr)
      this.rules[156].opcodes[21] = { type: 4, index: 185 };// RNM(ceilingMethodCallExpr)
      this.rules[156].opcodes[22] = { type: 4, index: 186 };// RNM(distanceMethodCallExpr)
      this.rules[156].opcodes[23] = { type: 4, index: 187 };// RNM(geoLengthMethodCallExpr)
      this.rules[156].opcodes[24] = { type: 4, index: 179 };// RNM(totalOffsetMinutesMethodCallExpr)
      this.rules[156].opcodes[25] = { type: 4, index: 180 };// RNM(minDateTimeMethodCallExpr)
      this.rules[156].opcodes[26] = { type: 4, index: 181 };// RNM(maxDateTimeMethodCallExpr)
      this.rules[156].opcodes[27] = { type: 4, index: 182 };// RNM(nowMethodCallExpr)
      this.rules[156].opcodes[28] = { type: 4, index: 191 };// RNM(caseMethodCallExpr)
      this.rules[156].opcodes[29] = { type: 4, index: 157 };// RNM(boolMethodCallExpr)
    
      /* boolMethodCallExpr */
      this.rules[157].opcodes = [];
      this.rules[157].opcodes[0] = { type: 1, children: [1,2,3,4,5,6] };// ALT
      this.rules[157].opcodes[1] = { type: 4, index: 160 };// RNM(endsWithMethodCallExpr)
      this.rules[157].opcodes[2] = { type: 4, index: 164 };// RNM(startsWithMethodCallExpr)
      this.rules[157].opcodes[3] = { type: 4, index: 159 };// RNM(containsMethodCallExpr)
      this.rules[157].opcodes[4] = { type: 4, index: 188 };// RNM(intersectsMethodCallExpr)
      this.rules[157].opcodes[5] = { type: 4, index: 189 };// RNM(hasSubsetMethodCallExpr)
      this.rules[157].opcodes[6] = { type: 4, index: 190 };// RNM(hasSubsequenceMethodCallExpr)
    
      /* concatMethodCallExpr */
      this.rules[158].opcodes = [];
      this.rules[158].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[158].opcodes[1] = { type: 7, string: [99,111,110,99,97,116] };// TLS
      this.rules[158].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[158].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[158].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[158].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[158].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[158].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[158].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[158].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[158].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* containsMethodCallExpr */
      this.rules[159].opcodes = [];
      this.rules[159].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[159].opcodes[1] = { type: 7, string: [99,111,110,116,97,105,110,115] };// TLS
      this.rules[159].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[159].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[159].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[159].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[159].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[159].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[159].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[159].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[159].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* endsWithMethodCallExpr */
      this.rules[160].opcodes = [];
      this.rules[160].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[160].opcodes[1] = { type: 7, string: [101,110,100,115,119,105,116,104] };// TLS
      this.rules[160].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[160].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[160].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[160].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[160].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[160].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[160].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[160].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[160].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* indexOfMethodCallExpr */
      this.rules[161].opcodes = [];
      this.rules[161].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[161].opcodes[1] = { type: 7, string: [105,110,100,101,120,111,102] };// TLS
      this.rules[161].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[161].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[161].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[161].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[161].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[161].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[161].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[161].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[161].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* lengthMethodCallExpr */
      this.rules[162].opcodes = [];
      this.rules[162].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[162].opcodes[1] = { type: 7, string: [108,101,110,103,116,104] };// TLS
      this.rules[162].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[162].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[162].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[162].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[162].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* matchesPatternMethodCallExpr */
      this.rules[163].opcodes = [];
      this.rules[163].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[163].opcodes[1] = { type: 7, string: [109,97,116,99,104,101,115,112,97,116,116,101,114,110] };// TLS
      this.rules[163].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[163].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[163].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[163].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[163].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[163].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[163].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[163].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[163].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* startsWithMethodCallExpr */
      this.rules[164].opcodes = [];
      this.rules[164].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[164].opcodes[1] = { type: 7, string: [115,116,97,114,116,115,119,105,116,104] };// TLS
      this.rules[164].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[164].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[164].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[164].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[164].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[164].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[164].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[164].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[164].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* substringMethodCallExpr */
      this.rules[165].opcodes = [];
      this.rules[165].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10,16] };// CAT
      this.rules[165].opcodes[1] = { type: 7, string: [115,117,98,115,116,114,105,110,103] };// TLS
      this.rules[165].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[165].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[165].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[165].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[165].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[165].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[165].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[165].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[165].opcodes[10] = { type: 3, min: 0, max: 1 };// REP
      this.rules[165].opcodes[11] = { type: 2, children: [12,13,14,15] };// CAT
      this.rules[165].opcodes[12] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[165].opcodes[13] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[165].opcodes[14] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[165].opcodes[15] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[165].opcodes[16] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* toLowerMethodCallExpr */
      this.rules[166].opcodes = [];
      this.rules[166].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[166].opcodes[1] = { type: 7, string: [116,111,108,111,119,101,114] };// TLS
      this.rules[166].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[166].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[166].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[166].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[166].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* toUpperMethodCallExpr */
      this.rules[167].opcodes = [];
      this.rules[167].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[167].opcodes[1] = { type: 7, string: [116,111,117,112,112,101,114] };// TLS
      this.rules[167].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[167].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[167].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[167].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[167].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* trimMethodCallExpr */
      this.rules[168].opcodes = [];
      this.rules[168].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[168].opcodes[1] = { type: 7, string: [116,114,105,109] };// TLS
      this.rules[168].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[168].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[168].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[168].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[168].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* yearMethodCallExpr */
      this.rules[169].opcodes = [];
      this.rules[169].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[169].opcodes[1] = { type: 7, string: [121,101,97,114] };// TLS
      this.rules[169].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[169].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[169].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[169].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[169].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* monthMethodCallExpr */
      this.rules[170].opcodes = [];
      this.rules[170].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[170].opcodes[1] = { type: 7, string: [109,111,110,116,104] };// TLS
      this.rules[170].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[170].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[170].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[170].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[170].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* dayMethodCallExpr */
      this.rules[171].opcodes = [];
      this.rules[171].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[171].opcodes[1] = { type: 7, string: [100,97,121] };// TLS
      this.rules[171].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[171].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[171].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[171].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[171].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* hourMethodCallExpr */
      this.rules[172].opcodes = [];
      this.rules[172].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[172].opcodes[1] = { type: 7, string: [104,111,117,114] };// TLS
      this.rules[172].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[172].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[172].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[172].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[172].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* minuteMethodCallExpr */
      this.rules[173].opcodes = [];
      this.rules[173].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[173].opcodes[1] = { type: 7, string: [109,105,110,117,116,101] };// TLS
      this.rules[173].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[173].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[173].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[173].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[173].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* secondMethodCallExpr */
      this.rules[174].opcodes = [];
      this.rules[174].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[174].opcodes[1] = { type: 7, string: [115,101,99,111,110,100] };// TLS
      this.rules[174].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[174].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[174].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[174].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[174].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* fractionalsecondsMethodCallExpr */
      this.rules[175].opcodes = [];
      this.rules[175].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[175].opcodes[1] = { type: 7, string: [102,114,97,99,116,105,111,110,97,108,115,101,99,111,110,100,115] };// TLS
      this.rules[175].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[175].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[175].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[175].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[175].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* totalsecondsMethodCallExpr */
      this.rules[176].opcodes = [];
      this.rules[176].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[176].opcodes[1] = { type: 7, string: [116,111,116,97,108,115,101,99,111,110,100,115] };// TLS
      this.rules[176].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[176].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[176].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[176].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[176].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* dateMethodCallExpr */
      this.rules[177].opcodes = [];
      this.rules[177].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[177].opcodes[1] = { type: 7, string: [100,97,116,101] };// TLS
      this.rules[177].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[177].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[177].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[177].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[177].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* timeMethodCallExpr */
      this.rules[178].opcodes = [];
      this.rules[178].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[178].opcodes[1] = { type: 7, string: [116,105,109,101] };// TLS
      this.rules[178].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[178].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[178].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[178].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[178].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* totalOffsetMinutesMethodCallExpr */
      this.rules[179].opcodes = [];
      this.rules[179].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[179].opcodes[1] = { type: 7, string: [116,111,116,97,108,111,102,102,115,101,116,109,105,110,117,116,101,115] };// TLS
      this.rules[179].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[179].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[179].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[179].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[179].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* minDateTimeMethodCallExpr */
      this.rules[180].opcodes = [];
      this.rules[180].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[180].opcodes[1] = { type: 7, string: [109,105,110,100,97,116,101,116,105,109,101] };// TLS
      this.rules[180].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[180].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[180].opcodes[4] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* maxDateTimeMethodCallExpr */
      this.rules[181].opcodes = [];
      this.rules[181].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[181].opcodes[1] = { type: 7, string: [109,97,120,100,97,116,101,116,105,109,101] };// TLS
      this.rules[181].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[181].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[181].opcodes[4] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* nowMethodCallExpr */
      this.rules[182].opcodes = [];
      this.rules[182].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[182].opcodes[1] = { type: 7, string: [110,111,119] };// TLS
      this.rules[182].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[182].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[182].opcodes[4] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* roundMethodCallExpr */
      this.rules[183].opcodes = [];
      this.rules[183].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[183].opcodes[1] = { type: 7, string: [114,111,117,110,100] };// TLS
      this.rules[183].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[183].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[183].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[183].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[183].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* floorMethodCallExpr */
      this.rules[184].opcodes = [];
      this.rules[184].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[184].opcodes[1] = { type: 7, string: [102,108,111,111,114] };// TLS
      this.rules[184].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[184].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[184].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[184].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[184].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* ceilingMethodCallExpr */
      this.rules[185].opcodes = [];
      this.rules[185].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[185].opcodes[1] = { type: 7, string: [99,101,105,108,105,110,103] };// TLS
      this.rules[185].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[185].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[185].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[185].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[185].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* distanceMethodCallExpr */
      this.rules[186].opcodes = [];
      this.rules[186].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[186].opcodes[1] = { type: 7, string: [103,101,111,46,100,105,115,116,97,110,99,101] };// TLS
      this.rules[186].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[186].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[186].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[186].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[186].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[186].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[186].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[186].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[186].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* geoLengthMethodCallExpr */
      this.rules[187].opcodes = [];
      this.rules[187].opcodes[0] = { type: 2, children: [1,2,3,4,5,6] };// CAT
      this.rules[187].opcodes[1] = { type: 7, string: [103,101,111,46,108,101,110,103,116,104] };// TLS
      this.rules[187].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[187].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[187].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[187].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[187].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* intersectsMethodCallExpr */
      this.rules[188].opcodes = [];
      this.rules[188].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[188].opcodes[1] = { type: 7, string: [103,101,111,46,105,110,116,101,114,115,101,99,116,115] };// TLS
      this.rules[188].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[188].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[188].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[188].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[188].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[188].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[188].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[188].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[188].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* hasSubsetMethodCallExpr */
      this.rules[189].opcodes = [];
      this.rules[189].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[189].opcodes[1] = { type: 7, string: [104,97,115,115,117,98,115,101,116] };// TLS
      this.rules[189].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[189].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[189].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[189].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[189].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[189].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[189].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[189].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[189].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* hasSubsequenceMethodCallExpr */
      this.rules[190].opcodes = [];
      this.rules[190].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10] };// CAT
      this.rules[190].opcodes[1] = { type: 7, string: [104,97,115,115,117,98,115,101,113,117,101,110,99,101] };// TLS
      this.rules[190].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[190].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[190].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[190].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[190].opcodes[6] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[190].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[190].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[190].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[190].opcodes[10] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* caseMethodCallExpr */
      this.rules[191].opcodes = [];
      this.rules[191].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9,10,20] };// CAT
      this.rules[191].opcodes[1] = { type: 7, string: [99,97,115,101] };// TLS
      this.rules[191].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[191].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[191].opcodes[4] = { type: 4, index: 129 };// RNM(boolCommonExpr)
      this.rules[191].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[191].opcodes[6] = { type: 4, index: 389 };// RNM(COLON)
      this.rules[191].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[191].opcodes[8] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[191].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[191].opcodes[10] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[191].opcodes[11] = { type: 2, children: [12,13,14,15,16,17,18,19] };// CAT
      this.rules[191].opcodes[12] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[191].opcodes[13] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[191].opcodes[14] = { type: 4, index: 129 };// RNM(boolCommonExpr)
      this.rules[191].opcodes[15] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[191].opcodes[16] = { type: 4, index: 389 };// RNM(COLON)
      this.rules[191].opcodes[17] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[191].opcodes[18] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[191].opcodes[19] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[191].opcodes[20] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* parenExpr */
      this.rules[192].opcodes = [];
      this.rules[192].opcodes[0] = { type: 2, children: [1,2,3,4,5] };// CAT
      this.rules[192].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[192].opcodes[2] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[192].opcodes[3] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[192].opcodes[4] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[192].opcodes[5] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* listExpr */
      this.rules[193].opcodes = [];
      this.rules[193].opcodes[0] = { type: 2, children: [1,2,3,4,5,11] };// CAT
      this.rules[193].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[193].opcodes[2] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[193].opcodes[3] = { type: 4, index: 281 };// RNM(primitiveLiteral)
      this.rules[193].opcodes[4] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[193].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[193].opcodes[6] = { type: 2, children: [7,8,9,10] };// CAT
      this.rules[193].opcodes[7] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[193].opcodes[8] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[193].opcodes[9] = { type: 4, index: 281 };// RNM(primitiveLiteral)
      this.rules[193].opcodes[10] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[193].opcodes[11] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* andExpr */
      this.rules[194].opcodes = [];
      this.rules[194].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[194].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[194].opcodes[2] = { type: 7, string: [97,110,100] };// TLS
      this.rules[194].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[194].opcodes[4] = { type: 4, index: 129 };// RNM(boolCommonExpr)
    
      /* orExpr */
      this.rules[195].opcodes = [];
      this.rules[195].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[195].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[195].opcodes[2] = { type: 7, string: [111,114] };// TLS
      this.rules[195].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[195].opcodes[4] = { type: 4, index: 129 };// RNM(boolCommonExpr)
    
      /* eqExpr */
      this.rules[196].opcodes = [];
      this.rules[196].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[196].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[196].opcodes[2] = { type: 7, string: [101,113] };// TLS
      this.rules[196].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[196].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* neExpr */
      this.rules[197].opcodes = [];
      this.rules[197].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[197].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[197].opcodes[2] = { type: 7, string: [110,101] };// TLS
      this.rules[197].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[197].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* ltExpr */
      this.rules[198].opcodes = [];
      this.rules[198].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[198].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[198].opcodes[2] = { type: 7, string: [108,116] };// TLS
      this.rules[198].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[198].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* leExpr */
      this.rules[199].opcodes = [];
      this.rules[199].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[199].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[199].opcodes[2] = { type: 7, string: [108,101] };// TLS
      this.rules[199].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[199].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* gtExpr */
      this.rules[200].opcodes = [];
      this.rules[200].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[200].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[200].opcodes[2] = { type: 7, string: [103,116] };// TLS
      this.rules[200].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[200].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* geExpr */
      this.rules[201].opcodes = [];
      this.rules[201].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[201].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[201].opcodes[2] = { type: 7, string: [103,101] };// TLS
      this.rules[201].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[201].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* inExpr */
      this.rules[202].opcodes = [];
      this.rules[202].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[202].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[202].opcodes[2] = { type: 7, string: [105,110] };// TLS
      this.rules[202].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[202].opcodes[4] = { type: 1, children: [5,6] };// ALT
      this.rules[202].opcodes[5] = { type: 4, index: 193 };// RNM(listExpr)
      this.rules[202].opcodes[6] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* hasExpr */
      this.rules[203].opcodes = [];
      this.rules[203].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[203].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[203].opcodes[2] = { type: 7, string: [104,97,115] };// TLS
      this.rules[203].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[203].opcodes[4] = { type: 4, index: 318 };// RNM(enum)
    
      /* addExpr */
      this.rules[204].opcodes = [];
      this.rules[204].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[204].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[204].opcodes[2] = { type: 7, string: [97,100,100] };// TLS
      this.rules[204].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[204].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* subExpr */
      this.rules[205].opcodes = [];
      this.rules[205].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[205].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[205].opcodes[2] = { type: 7, string: [115,117,98] };// TLS
      this.rules[205].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[205].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* mulExpr */
      this.rules[206].opcodes = [];
      this.rules[206].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[206].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[206].opcodes[2] = { type: 7, string: [109,117,108] };// TLS
      this.rules[206].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[206].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* divExpr */
      this.rules[207].opcodes = [];
      this.rules[207].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[207].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[207].opcodes[2] = { type: 7, string: [100,105,118] };// TLS
      this.rules[207].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[207].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* divbyExpr */
      this.rules[208].opcodes = [];
      this.rules[208].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[208].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[208].opcodes[2] = { type: 7, string: [100,105,118,98,121] };// TLS
      this.rules[208].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[208].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* modExpr */
      this.rules[209].opcodes = [];
      this.rules[209].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[209].opcodes[1] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[209].opcodes[2] = { type: 7, string: [109,111,100] };// TLS
      this.rules[209].opcodes[3] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[209].opcodes[4] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* negateExpr */
      this.rules[210].opcodes = [];
      this.rules[210].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[210].opcodes[1] = { type: 7, string: [45] };// TLS
      this.rules[210].opcodes[2] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[210].opcodes[3] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* notExpr */
      this.rules[211].opcodes = [];
      this.rules[211].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[211].opcodes[1] = { type: 7, string: [110,111,116] };// TLS
      this.rules[211].opcodes[2] = { type: 4, index: 386 };// RNM(RWS)
      this.rules[211].opcodes[3] = { type: 4, index: 129 };// RNM(boolCommonExpr)
    
      /* isofExpr */
      this.rules[212].opcodes = [];
      this.rules[212].opcodes[0] = { type: 2, children: [1,2,3,4,10,11,12] };// CAT
      this.rules[212].opcodes[1] = { type: 7, string: [105,115,111,102] };// TLS
      this.rules[212].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[212].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[212].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[212].opcodes[5] = { type: 2, children: [6,7,8,9] };// CAT
      this.rules[212].opcodes[6] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[212].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[212].opcodes[8] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[212].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[212].opcodes[10] = { type: 4, index: 231 };// RNM(optionallyQualifiedTypeName)
      this.rules[212].opcodes[11] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[212].opcodes[12] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* castExpr */
      this.rules[213].opcodes = [];
      this.rules[213].opcodes[0] = { type: 2, children: [1,2,3,4,10,11,12] };// CAT
      this.rules[213].opcodes[1] = { type: 7, string: [99,97,115,116] };// TLS
      this.rules[213].opcodes[2] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[213].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[213].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[213].opcodes[5] = { type: 2, children: [6,7,8,9] };// CAT
      this.rules[213].opcodes[6] = { type: 4, index: 128 };// RNM(commonExpr)
      this.rules[213].opcodes[7] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[213].opcodes[8] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[213].opcodes[9] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[213].opcodes[10] = { type: 4, index: 231 };// RNM(optionallyQualifiedTypeName)
      this.rules[213].opcodes[11] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[213].opcodes[12] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* arrayOrObject */
      this.rules[214].opcodes = [];
      this.rules[214].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[214].opcodes[1] = { type: 4, index: 215 };// RNM(array)
      this.rules[214].opcodes[2] = { type: 4, index: 216 };// RNM(object)
    
      /* array */
      this.rules[215].opcodes = [];
      this.rules[215].opcodes[0] = { type: 2, children: [1,2,9] };// CAT
      this.rules[215].opcodes[1] = { type: 4, index: 221 };// RNM(begin-array)
      this.rules[215].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[215].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[215].opcodes[4] = { type: 4, index: 218 };// RNM(valueInUrl)
      this.rules[215].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[215].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[215].opcodes[7] = { type: 4, index: 225 };// RNM(value-separator)
      this.rules[215].opcodes[8] = { type: 4, index: 218 };// RNM(valueInUrl)
      this.rules[215].opcodes[9] = { type: 4, index: 222 };// RNM(end-array)
    
      /* object */
      this.rules[216].opcodes = [];
      this.rules[216].opcodes[0] = { type: 2, children: [1,2,9] };// CAT
      this.rules[216].opcodes[1] = { type: 4, index: 219 };// RNM(begin-object)
      this.rules[216].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[216].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[216].opcodes[4] = { type: 4, index: 217 };// RNM(member)
      this.rules[216].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[216].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[216].opcodes[7] = { type: 4, index: 225 };// RNM(value-separator)
      this.rules[216].opcodes[8] = { type: 4, index: 217 };// RNM(member)
      this.rules[216].opcodes[9] = { type: 4, index: 220 };// RNM(end-object)
    
      /* member */
      this.rules[217].opcodes = [];
      this.rules[217].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[217].opcodes[1] = { type: 4, index: 226 };// RNM(stringInUrl)
      this.rules[217].opcodes[2] = { type: 4, index: 224 };// RNM(name-separator)
      this.rules[217].opcodes[3] = { type: 4, index: 218 };// RNM(valueInUrl)
    
      /* valueInUrl */
      this.rules[218].opcodes = [];
      this.rules[218].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[218].opcodes[1] = { type: 4, index: 226 };// RNM(stringInUrl)
      this.rules[218].opcodes[2] = { type: 4, index: 128 };// RNM(commonExpr)
    
      /* begin-object */
      this.rules[219].opcodes = [];
      this.rules[219].opcodes[0] = { type: 2, children: [1,2,5] };// CAT
      this.rules[219].opcodes[1] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[219].opcodes[2] = { type: 1, children: [3,4] };// ALT
      this.rules[219].opcodes[3] = { type: 7, string: [123] };// TLS
      this.rules[219].opcodes[4] = { type: 7, string: [37,55,98] };// TLS
      this.rules[219].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
    
      /* end-object */
      this.rules[220].opcodes = [];
      this.rules[220].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[220].opcodes[1] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[220].opcodes[2] = { type: 1, children: [3,4] };// ALT
      this.rules[220].opcodes[3] = { type: 7, string: [125] };// TLS
      this.rules[220].opcodes[4] = { type: 7, string: [37,55,100] };// TLS
    
      /* begin-array */
      this.rules[221].opcodes = [];
      this.rules[221].opcodes[0] = { type: 2, children: [1,2,5] };// CAT
      this.rules[221].opcodes[1] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[221].opcodes[2] = { type: 1, children: [3,4] };// ALT
      this.rules[221].opcodes[3] = { type: 7, string: [91] };// TLS
      this.rules[221].opcodes[4] = { type: 7, string: [37,53,98] };// TLS
      this.rules[221].opcodes[5] = { type: 4, index: 387 };// RNM(BWS)
    
      /* end-array */
      this.rules[222].opcodes = [];
      this.rules[222].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[222].opcodes[1] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[222].opcodes[2] = { type: 1, children: [3,4] };// ALT
      this.rules[222].opcodes[3] = { type: 7, string: [93] };// TLS
      this.rules[222].opcodes[4] = { type: 7, string: [37,53,100] };// TLS
    
      /* quotation-mark */
      this.rules[223].opcodes = [];
      this.rules[223].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[223].opcodes[1] = { type: 4, index: 442 };// RNM(DQUOTE)
      this.rules[223].opcodes[2] = { type: 7, string: [37,50,50] };// TLS
    
      /* name-separator */
      this.rules[224].opcodes = [];
      this.rules[224].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[224].opcodes[1] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[224].opcodes[2] = { type: 4, index: 389 };// RNM(COLON)
      this.rules[224].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
    
      /* value-separator */
      this.rules[225].opcodes = [];
      this.rules[225].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[225].opcodes[1] = { type: 4, index: 387 };// RNM(BWS)
      this.rules[225].opcodes[2] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[225].opcodes[3] = { type: 4, index: 387 };// RNM(BWS)
    
      /* stringInUrl */
      this.rules[226].opcodes = [];
      this.rules[226].opcodes[0] = { type: 2, children: [1,2,4] };// CAT
      this.rules[226].opcodes[1] = { type: 4, index: 223 };// RNM(quotation-mark)
      this.rules[226].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[226].opcodes[3] = { type: 4, index: 227 };// RNM(charInJSON)
      this.rules[226].opcodes[4] = { type: 4, index: 223 };// RNM(quotation-mark)
    
      /* charInJSON */
      this.rules[227].opcodes = [];
      this.rules[227].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[227].opcodes[1] = { type: 4, index: 433 };// RNM(qchar-unescaped)
      this.rules[227].opcodes[2] = { type: 4, index: 228 };// RNM(qchar-JSON-special)
      this.rules[227].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[227].opcodes[4] = { type: 4, index: 229 };// RNM(escape)
      this.rules[227].opcodes[5] = { type: 1, children: [6,7,8,11,12,13,14,15,16] };// ALT
      this.rules[227].opcodes[6] = { type: 4, index: 223 };// RNM(quotation-mark)
      this.rules[227].opcodes[7] = { type: 4, index: 229 };// RNM(escape)
      this.rules[227].opcodes[8] = { type: 1, children: [9,10] };// ALT
      this.rules[227].opcodes[9] = { type: 7, string: [47] };// TLS
      this.rules[227].opcodes[10] = { type: 7, string: [37,50,102] };// TLS
      this.rules[227].opcodes[11] = { type: 6, string: [98] };// TBS
      this.rules[227].opcodes[12] = { type: 6, string: [102] };// TBS
      this.rules[227].opcodes[13] = { type: 6, string: [110] };// TBS
      this.rules[227].opcodes[14] = { type: 6, string: [114] };// TBS
      this.rules[227].opcodes[15] = { type: 6, string: [116] };// TBS
      this.rules[227].opcodes[16] = { type: 2, children: [17,18] };// CAT
      this.rules[227].opcodes[17] = { type: 6, string: [117] };// TBS
      this.rules[227].opcodes[18] = { type: 3, min: 4, max: 4 };// REP
      this.rules[227].opcodes[19] = { type: 4, index: 440 };// RNM(HEXDIG)
    
      /* qchar-JSON-special */
      this.rules[228].opcodes = [];
      this.rules[228].opcodes[0] = { type: 1, children: [1,2,3,4,5,6] };// ALT
      this.rules[228].opcodes[1] = { type: 4, index: 443 };// RNM(SP)
      this.rules[228].opcodes[2] = { type: 7, string: [58] };// TLS
      this.rules[228].opcodes[3] = { type: 7, string: [123] };// TLS
      this.rules[228].opcodes[4] = { type: 7, string: [125] };// TLS
      this.rules[228].opcodes[5] = { type: 7, string: [91] };// TLS
      this.rules[228].opcodes[6] = { type: 7, string: [93] };// TLS
    
      /* escape */
      this.rules[229].opcodes = [];
      this.rules[229].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[229].opcodes[1] = { type: 7, string: [92] };// TLS
      this.rules[229].opcodes[2] = { type: 7, string: [37,53,99] };// TLS
    
      /* qualifiedTypeName */
      this.rules[230].opcodes = [];
      this.rules[230].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[230].opcodes[1] = { type: 4, index: 232 };// RNM(singleQualifiedTypeName)
      this.rules[230].opcodes[2] = { type: 2, children: [3,4,5,6] };// CAT
      this.rules[230].opcodes[3] = { type: 6, string: [67,111,108,108,101,99,116,105,111,110] };// TBS
      this.rules[230].opcodes[4] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[230].opcodes[5] = { type: 4, index: 232 };// RNM(singleQualifiedTypeName)
      this.rules[230].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* optionallyQualifiedTypeName */
      this.rules[231].opcodes = [];
      this.rules[231].opcodes[0] = { type: 1, children: [1,2,7,8] };// ALT
      this.rules[231].opcodes[1] = { type: 4, index: 232 };// RNM(singleQualifiedTypeName)
      this.rules[231].opcodes[2] = { type: 2, children: [3,4,5,6] };// CAT
      this.rules[231].opcodes[3] = { type: 6, string: [67,111,108,108,101,99,116,105,111,110] };// TBS
      this.rules[231].opcodes[4] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[231].opcodes[5] = { type: 4, index: 232 };// RNM(singleQualifiedTypeName)
      this.rules[231].opcodes[6] = { type: 4, index: 398 };// RNM(CLOSE)
      this.rules[231].opcodes[7] = { type: 4, index: 233 };// RNM(singleTypeName)
      this.rules[231].opcodes[8] = { type: 2, children: [9,10,11,12] };// CAT
      this.rules[231].opcodes[9] = { type: 6, string: [67,111,108,108,101,99,116,105,111,110] };// TBS
      this.rules[231].opcodes[10] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[231].opcodes[11] = { type: 4, index: 233 };// RNM(singleTypeName)
      this.rules[231].opcodes[12] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* singleQualifiedTypeName */
      this.rules[232].opcodes = [];
      this.rules[232].opcodes[0] = { type: 1, children: [1,2,3,4,5] };// ALT
      this.rules[232].opcodes[1] = { type: 4, index: 234 };// RNM(qualifiedEntityTypeName)
      this.rules[232].opcodes[2] = { type: 4, index: 235 };// RNM(qualifiedComplexTypeName)
      this.rules[232].opcodes[3] = { type: 4, index: 236 };// RNM(qualifiedTypeDefinitionName)
      this.rules[232].opcodes[4] = { type: 4, index: 237 };// RNM(qualifiedEnumTypeName)
      this.rules[232].opcodes[5] = { type: 4, index: 253 };// RNM(primitiveTypeName)
    
      /* singleTypeName */
      this.rules[233].opcodes = [];
      this.rules[233].opcodes[0] = { type: 1, children: [1,2,3,4] };// ALT
      this.rules[233].opcodes[1] = { type: 4, index: 244 };// RNM(entityTypeName)
      this.rules[233].opcodes[2] = { type: 4, index: 245 };// RNM(complexTypeName)
      this.rules[233].opcodes[3] = { type: 4, index: 246 };// RNM(typeDefinitionName)
      this.rules[233].opcodes[4] = { type: 4, index: 247 };// RNM(enumerationTypeName)
    
      /* qualifiedEntityTypeName */
      this.rules[234].opcodes = [];
      this.rules[234].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[234].opcodes[1] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[234].opcodes[2] = { type: 7, string: [46] };// TLS
      this.rules[234].opcodes[3] = { type: 4, index: 244 };// RNM(entityTypeName)
    
      /* qualifiedComplexTypeName */
      this.rules[235].opcodes = [];
      this.rules[235].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[235].opcodes[1] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[235].opcodes[2] = { type: 7, string: [46] };// TLS
      this.rules[235].opcodes[3] = { type: 4, index: 245 };// RNM(complexTypeName)
    
      /* qualifiedTypeDefinitionName */
      this.rules[236].opcodes = [];
      this.rules[236].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[236].opcodes[1] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[236].opcodes[2] = { type: 7, string: [46] };// TLS
      this.rules[236].opcodes[3] = { type: 4, index: 246 };// RNM(typeDefinitionName)
    
      /* qualifiedEnumTypeName */
      this.rules[237].opcodes = [];
      this.rules[237].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[237].opcodes[1] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[237].opcodes[2] = { type: 7, string: [46] };// TLS
      this.rules[237].opcodes[3] = { type: 4, index: 247 };// RNM(enumerationTypeName)
    
      /* optionallyQualifiedEntityTypeName */
      this.rules[238].opcodes = [];
      this.rules[238].opcodes[0] = { type: 2, children: [1,5] };// CAT
      this.rules[238].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[238].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[238].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[238].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[238].opcodes[5] = { type: 4, index: 244 };// RNM(entityTypeName)
    
      /* optionallyQualifiedComplexTypeName */
      this.rules[239].opcodes = [];
      this.rules[239].opcodes[0] = { type: 2, children: [1,5] };// CAT
      this.rules[239].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[239].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[239].opcodes[3] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[239].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[239].opcodes[5] = { type: 4, index: 245 };// RNM(complexTypeName)
    
      /* namespace */
      this.rules[240].opcodes = [];
      this.rules[240].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[240].opcodes[1] = { type: 4, index: 241 };// RNM(namespacePart)
      this.rules[240].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[240].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[240].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[240].opcodes[5] = { type: 4, index: 241 };// RNM(namespacePart)
    
      /* namespacePart */
      this.rules[241].opcodes = [];
      this.rules[241].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* entitySetName */
      this.rules[242].opcodes = [];
      this.rules[242].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* singletonEntity */
      this.rules[243].opcodes = [];
      this.rules[243].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* entityTypeName */
      this.rules[244].opcodes = [];
      this.rules[244].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* complexTypeName */
      this.rules[245].opcodes = [];
      this.rules[245].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* typeDefinitionName */
      this.rules[246].opcodes = [];
      this.rules[246].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* enumerationTypeName */
      this.rules[247].opcodes = [];
      this.rules[247].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* enumerationMember */
      this.rules[248].opcodes = [];
      this.rules[248].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* termName */
      this.rules[249].opcodes = [];
      this.rules[249].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* odataIdentifier */
      this.rules[250].opcodes = [];
      this.rules[250].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[250].opcodes[1] = { type: 4, index: 251 };// RNM(identifierLeadingCharacter)
      this.rules[250].opcodes[2] = { type: 3, min: 0, max: 127 };// REP
      this.rules[250].opcodes[3] = { type: 4, index: 252 };// RNM(identifierCharacter)
    
      /* identifierLeadingCharacter */
      this.rules[251].opcodes = [];
      this.rules[251].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[251].opcodes[1] = { type: 4, index: 438 };// RNM(ALPHA)
      this.rules[251].opcodes[2] = { type: 7, string: [95] };// TLS
    
      /* identifierCharacter */
      this.rules[252].opcodes = [];
      this.rules[252].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[252].opcodes[1] = { type: 4, index: 438 };// RNM(ALPHA)
      this.rules[252].opcodes[2] = { type: 7, string: [95] };// TLS
      this.rules[252].opcodes[3] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* primitiveTypeName */
      this.rules[253].opcodes = [];
      this.rules[253].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[253].opcodes[1] = { type: 6, string: [69,100,109,46] };// TBS
      this.rules[253].opcodes[2] = { type: 1, children: [3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] };// ALT
      this.rules[253].opcodes[3] = { type: 6, string: [66,105,110,97,114,121] };// TBS
      this.rules[253].opcodes[4] = { type: 6, string: [66,111,111,108,101,97,110] };// TBS
      this.rules[253].opcodes[5] = { type: 6, string: [66,121,116,101] };// TBS
      this.rules[253].opcodes[6] = { type: 6, string: [68,97,116,101] };// TBS
      this.rules[253].opcodes[7] = { type: 6, string: [68,97,116,101,84,105,109,101,79,102,102,115,101,116] };// TBS
      this.rules[253].opcodes[8] = { type: 6, string: [68,101,99,105,109,97,108] };// TBS
      this.rules[253].opcodes[9] = { type: 6, string: [68,111,117,98,108,101] };// TBS
      this.rules[253].opcodes[10] = { type: 6, string: [68,117,114,97,116,105,111,110] };// TBS
      this.rules[253].opcodes[11] = { type: 6, string: [71,117,105,100] };// TBS
      this.rules[253].opcodes[12] = { type: 6, string: [73,110,116,49,54] };// TBS
      this.rules[253].opcodes[13] = { type: 6, string: [73,110,116,51,50] };// TBS
      this.rules[253].opcodes[14] = { type: 6, string: [73,110,116,54,52] };// TBS
      this.rules[253].opcodes[15] = { type: 6, string: [83,66,121,116,101] };// TBS
      this.rules[253].opcodes[16] = { type: 6, string: [83,105,110,103,108,101] };// TBS
      this.rules[253].opcodes[17] = { type: 6, string: [83,116,114,101,97,109] };// TBS
      this.rules[253].opcodes[18] = { type: 6, string: [83,116,114,105,110,103] };// TBS
      this.rules[253].opcodes[19] = { type: 6, string: [84,105,109,101,79,102,68,97,121] };// TBS
      this.rules[253].opcodes[20] = { type: 2, children: [21,22] };// CAT
      this.rules[253].opcodes[21] = { type: 4, index: 254 };// RNM(abstractSpatialTypeName)
      this.rules[253].opcodes[22] = { type: 3, min: 0, max: 1 };// REP
      this.rules[253].opcodes[23] = { type: 4, index: 255 };// RNM(concreteSpatialTypeName)
    
      /* abstractSpatialTypeName */
      this.rules[254].opcodes = [];
      this.rules[254].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[254].opcodes[1] = { type: 6, string: [71,101,111,103,114,97,112,104,121] };// TBS
      this.rules[254].opcodes[2] = { type: 6, string: [71,101,111,109,101,116,114,121] };// TBS
    
      /* concreteSpatialTypeName */
      this.rules[255].opcodes = [];
      this.rules[255].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7] };// ALT
      this.rules[255].opcodes[1] = { type: 6, string: [67,111,108,108,101,99,116,105,111,110] };// TBS
      this.rules[255].opcodes[2] = { type: 6, string: [76,105,110,101,83,116,114,105,110,103] };// TBS
      this.rules[255].opcodes[3] = { type: 6, string: [77,117,108,116,105,76,105,110,101,83,116,114,105,110,103] };// TBS
      this.rules[255].opcodes[4] = { type: 6, string: [77,117,108,116,105,80,111,105,110,116] };// TBS
      this.rules[255].opcodes[5] = { type: 6, string: [77,117,108,116,105,80,111,108,121,103,111,110] };// TBS
      this.rules[255].opcodes[6] = { type: 6, string: [80,111,105,110,116] };// TBS
      this.rules[255].opcodes[7] = { type: 6, string: [80,111,108,121,103,111,110] };// TBS
    
      /* primitiveProperty */
      this.rules[256].opcodes = [];
      this.rules[256].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[256].opcodes[1] = { type: 4, index: 257 };// RNM(primitiveKeyProperty)
      this.rules[256].opcodes[2] = { type: 4, index: 258 };// RNM(primitiveNonKeyProperty)
    
      /* primitiveKeyProperty */
      this.rules[257].opcodes = [];
      this.rules[257].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* primitiveNonKeyProperty */
      this.rules[258].opcodes = [];
      this.rules[258].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* primitiveColProperty */
      this.rules[259].opcodes = [];
      this.rules[259].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* complexProperty */
      this.rules[260].opcodes = [];
      this.rules[260].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* complexColProperty */
      this.rules[261].opcodes = [];
      this.rules[261].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* streamProperty */
      this.rules[262].opcodes = [];
      this.rules[262].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* navigationProperty */
      this.rules[263].opcodes = [];
      this.rules[263].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[263].opcodes[1] = { type: 4, index: 264 };// RNM(entityNavigationProperty)
      this.rules[263].opcodes[2] = { type: 4, index: 265 };// RNM(entityColNavigationProperty)
    
      /* entityNavigationProperty */
      this.rules[264].opcodes = [];
      this.rules[264].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* entityColNavigationProperty */
      this.rules[265].opcodes = [];
      this.rules[265].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* action */
      this.rules[266].opcodes = [];
      this.rules[266].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* actionImport */
      this.rules[267].opcodes = [];
      this.rules[267].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* function */
      this.rules[268].opcodes = [];
      this.rules[268].opcodes[0] = { type: 1, children: [1,2,3,4,5,6] };// ALT
      this.rules[268].opcodes[1] = { type: 4, index: 269 };// RNM(entityFunction)
      this.rules[268].opcodes[2] = { type: 4, index: 270 };// RNM(entityColFunction)
      this.rules[268].opcodes[3] = { type: 4, index: 271 };// RNM(complexFunction)
      this.rules[268].opcodes[4] = { type: 4, index: 272 };// RNM(complexColFunction)
      this.rules[268].opcodes[5] = { type: 4, index: 273 };// RNM(primitiveFunction)
      this.rules[268].opcodes[6] = { type: 4, index: 274 };// RNM(primitiveColFunction)
    
      /* entityFunction */
      this.rules[269].opcodes = [];
      this.rules[269].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* entityColFunction */
      this.rules[270].opcodes = [];
      this.rules[270].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* complexFunction */
      this.rules[271].opcodes = [];
      this.rules[271].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* complexColFunction */
      this.rules[272].opcodes = [];
      this.rules[272].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* primitiveFunction */
      this.rules[273].opcodes = [];
      this.rules[273].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* primitiveColFunction */
      this.rules[274].opcodes = [];
      this.rules[274].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* entityFunctionImport */
      this.rules[275].opcodes = [];
      this.rules[275].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* entityColFunctionImport */
      this.rules[276].opcodes = [];
      this.rules[276].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* complexFunctionImport */
      this.rules[277].opcodes = [];
      this.rules[277].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* complexColFunctionImport */
      this.rules[278].opcodes = [];
      this.rules[278].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* primitiveFunctionImport */
      this.rules[279].opcodes = [];
      this.rules[279].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* primitiveColFunctionImport */
      this.rules[280].opcodes = [];
      this.rules[280].opcodes[0] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* primitiveLiteral */
      this.rules[281].opcodes = [];
      this.rules[281].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32] };// ALT
      this.rules[281].opcodes[1] = { type: 4, index: 283 };// RNM(nullValue)
      this.rules[281].opcodes[2] = { type: 4, index: 289 };// RNM(booleanValue)
      this.rules[281].opcodes[3] = { type: 4, index: 294 };// RNM(guidValue)
      this.rules[281].opcodes[4] = { type: 4, index: 304 };// RNM(dateTimeOffsetValueInUrl)
      this.rules[281].opcodes[5] = { type: 4, index: 302 };// RNM(dateValue)
      this.rules[281].opcodes[6] = { type: 4, index: 308 };// RNM(timeOfDayValueInUrl)
      this.rules[281].opcodes[7] = { type: 4, index: 290 };// RNM(decimalValue)
      this.rules[281].opcodes[8] = { type: 4, index: 291 };// RNM(doubleValue)
      this.rules[281].opcodes[9] = { type: 4, index: 292 };// RNM(singleValue)
      this.rules[281].opcodes[10] = { type: 4, index: 296 };// RNM(sbyteValue)
      this.rules[281].opcodes[11] = { type: 4, index: 295 };// RNM(byteValue)
      this.rules[281].opcodes[12] = { type: 4, index: 297 };// RNM(int16Value)
      this.rules[281].opcodes[13] = { type: 4, index: 298 };// RNM(int32Value)
      this.rules[281].opcodes[14] = { type: 4, index: 299 };// RNM(int64Value)
      this.rules[281].opcodes[15] = { type: 4, index: 300 };// RNM(string)
      this.rules[281].opcodes[16] = { type: 4, index: 305 };// RNM(duration)
      this.rules[281].opcodes[17] = { type: 4, index: 318 };// RNM(enum)
      this.rules[281].opcodes[18] = { type: 4, index: 284 };// RNM(binary)
      this.rules[281].opcodes[19] = { type: 4, index: 322 };// RNM(geographyCollection)
      this.rules[281].opcodes[20] = { type: 4, index: 326 };// RNM(geographyLineString)
      this.rules[281].opcodes[21] = { type: 4, index: 330 };// RNM(geographyMultiLineString)
      this.rules[281].opcodes[22] = { type: 4, index: 333 };// RNM(geographyMultiPoint)
      this.rules[281].opcodes[23] = { type: 4, index: 336 };// RNM(geographyMultiPolygon)
      this.rules[281].opcodes[24] = { type: 4, index: 339 };// RNM(geographyPoint)
      this.rules[281].opcodes[25] = { type: 4, index: 345 };// RNM(geographyPolygon)
      this.rules[281].opcodes[26] = { type: 4, index: 350 };// RNM(geometryCollection)
      this.rules[281].opcodes[27] = { type: 4, index: 351 };// RNM(geometryLineString)
      this.rules[281].opcodes[28] = { type: 4, index: 352 };// RNM(geometryMultiLineString)
      this.rules[281].opcodes[29] = { type: 4, index: 353 };// RNM(geometryMultiPoint)
      this.rules[281].opcodes[30] = { type: 4, index: 354 };// RNM(geometryMultiPolygon)
      this.rules[281].opcodes[31] = { type: 4, index: 355 };// RNM(geometryPoint)
      this.rules[281].opcodes[32] = { type: 4, index: 356 };// RNM(geometryPolygon)
    
      /* primitiveValue */
      this.rules[282].opcodes = [];
      this.rules[282].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] };// ALT
      this.rules[282].opcodes[1] = { type: 4, index: 289 };// RNM(booleanValue)
      this.rules[282].opcodes[2] = { type: 4, index: 294 };// RNM(guidValue)
      this.rules[282].opcodes[3] = { type: 4, index: 306 };// RNM(durationValue)
      this.rules[282].opcodes[4] = { type: 4, index: 303 };// RNM(dateTimeOffsetValue)
      this.rules[282].opcodes[5] = { type: 4, index: 302 };// RNM(dateValue)
      this.rules[282].opcodes[6] = { type: 4, index: 307 };// RNM(timeOfDayValue)
      this.rules[282].opcodes[7] = { type: 4, index: 319 };// RNM(enumValue)
      this.rules[282].opcodes[8] = { type: 4, index: 323 };// RNM(fullCollectionLiteral)
      this.rules[282].opcodes[9] = { type: 4, index: 327 };// RNM(fullLineStringLiteral)
      this.rules[282].opcodes[10] = { type: 4, index: 334 };// RNM(fullMultiPointLiteral)
      this.rules[282].opcodes[11] = { type: 4, index: 331 };// RNM(fullMultiLineStringLiteral)
      this.rules[282].opcodes[12] = { type: 4, index: 337 };// RNM(fullMultiPolygonLiteral)
      this.rules[282].opcodes[13] = { type: 4, index: 340 };// RNM(fullPointLiteral)
      this.rules[282].opcodes[14] = { type: 4, index: 346 };// RNM(fullPolygonLiteral)
      this.rules[282].opcodes[15] = { type: 4, index: 290 };// RNM(decimalValue)
      this.rules[282].opcodes[16] = { type: 4, index: 291 };// RNM(doubleValue)
      this.rules[282].opcodes[17] = { type: 4, index: 292 };// RNM(singleValue)
      this.rules[282].opcodes[18] = { type: 4, index: 296 };// RNM(sbyteValue)
      this.rules[282].opcodes[19] = { type: 4, index: 295 };// RNM(byteValue)
      this.rules[282].opcodes[20] = { type: 4, index: 297 };// RNM(int16Value)
      this.rules[282].opcodes[21] = { type: 4, index: 298 };// RNM(int32Value)
      this.rules[282].opcodes[22] = { type: 4, index: 299 };// RNM(int64Value)
      this.rules[282].opcodes[23] = { type: 4, index: 285 };// RNM(binaryValue)
    
      /* nullValue */
      this.rules[283].opcodes = [];
      this.rules[283].opcodes[0] = { type: 6, string: [110,117,108,108] };// TBS
    
      /* binary */
      this.rules[284].opcodes = [];
      this.rules[284].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[284].opcodes[1] = { type: 7, string: [98,105,110,97,114,121] };// TLS
      this.rules[284].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[284].opcodes[3] = { type: 4, index: 285 };// RNM(binaryValue)
      this.rules[284].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* binaryValue */
      this.rules[285].opcodes = [];
      this.rules[285].opcodes[0] = { type: 2, children: [1,4] };// CAT
      this.rules[285].opcodes[1] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[285].opcodes[2] = { type: 3, min: 4, max: 4 };// REP
      this.rules[285].opcodes[3] = { type: 4, index: 288 };// RNM(base64char)
      this.rules[285].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[285].opcodes[5] = { type: 1, children: [6,7] };// ALT
      this.rules[285].opcodes[6] = { type: 4, index: 286 };// RNM(base64b16)
      this.rules[285].opcodes[7] = { type: 4, index: 287 };// RNM(base64b8)
    
      /* base64b16 */
      this.rules[286].opcodes = [];
      this.rules[286].opcodes[0] = { type: 2, children: [1,3,20] };// CAT
      this.rules[286].opcodes[1] = { type: 3, min: 2, max: 2 };// REP
      this.rules[286].opcodes[2] = { type: 4, index: 288 };// RNM(base64char)
      this.rules[286].opcodes[3] = { type: 1, children: [4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] };// ALT
      this.rules[286].opcodes[4] = { type: 6, string: [65] };// TBS
      this.rules[286].opcodes[5] = { type: 6, string: [69] };// TBS
      this.rules[286].opcodes[6] = { type: 6, string: [73] };// TBS
      this.rules[286].opcodes[7] = { type: 6, string: [77] };// TBS
      this.rules[286].opcodes[8] = { type: 6, string: [81] };// TBS
      this.rules[286].opcodes[9] = { type: 6, string: [85] };// TBS
      this.rules[286].opcodes[10] = { type: 6, string: [89] };// TBS
      this.rules[286].opcodes[11] = { type: 6, string: [99] };// TBS
      this.rules[286].opcodes[12] = { type: 6, string: [103] };// TBS
      this.rules[286].opcodes[13] = { type: 6, string: [107] };// TBS
      this.rules[286].opcodes[14] = { type: 6, string: [111] };// TBS
      this.rules[286].opcodes[15] = { type: 6, string: [115] };// TBS
      this.rules[286].opcodes[16] = { type: 6, string: [119] };// TBS
      this.rules[286].opcodes[17] = { type: 6, string: [48] };// TBS
      this.rules[286].opcodes[18] = { type: 6, string: [52] };// TBS
      this.rules[286].opcodes[19] = { type: 6, string: [56] };// TBS
      this.rules[286].opcodes[20] = { type: 3, min: 0, max: 1 };// REP
      this.rules[286].opcodes[21] = { type: 7, string: [61] };// TLS
    
      /* base64b8 */
      this.rules[287].opcodes = [];
      this.rules[287].opcodes[0] = { type: 2, children: [1,2,7] };// CAT
      this.rules[287].opcodes[1] = { type: 4, index: 288 };// RNM(base64char)
      this.rules[287].opcodes[2] = { type: 1, children: [3,4,5,6] };// ALT
      this.rules[287].opcodes[3] = { type: 6, string: [65] };// TBS
      this.rules[287].opcodes[4] = { type: 6, string: [81] };// TBS
      this.rules[287].opcodes[5] = { type: 6, string: [103] };// TBS
      this.rules[287].opcodes[6] = { type: 6, string: [119] };// TBS
      this.rules[287].opcodes[7] = { type: 3, min: 0, max: 1 };// REP
      this.rules[287].opcodes[8] = { type: 7, string: [61,61] };// TLS
    
      /* base64char */
      this.rules[288].opcodes = [];
      this.rules[288].opcodes[0] = { type: 1, children: [1,2,3,4] };// ALT
      this.rules[288].opcodes[1] = { type: 4, index: 438 };// RNM(ALPHA)
      this.rules[288].opcodes[2] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[288].opcodes[3] = { type: 7, string: [45] };// TLS
      this.rules[288].opcodes[4] = { type: 7, string: [95] };// TLS
    
      /* booleanValue */
      this.rules[289].opcodes = [];
      this.rules[289].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[289].opcodes[1] = { type: 7, string: [116,114,117,101] };// TLS
      this.rules[289].opcodes[2] = { type: 7, string: [102,97,108,115,101] };// TLS
    
      /* decimalValue */
      this.rules[290].opcodes = [];
      this.rules[290].opcodes[0] = { type: 1, children: [1,18] };// ALT
      this.rules[290].opcodes[1] = { type: 2, children: [2,4,6,11] };// CAT
      this.rules[290].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[290].opcodes[3] = { type: 4, index: 393 };// RNM(SIGN)
      this.rules[290].opcodes[4] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[290].opcodes[5] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[290].opcodes[6] = { type: 3, min: 0, max: 1 };// REP
      this.rules[290].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[290].opcodes[8] = { type: 7, string: [46] };// TLS
      this.rules[290].opcodes[9] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[290].opcodes[10] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[290].opcodes[11] = { type: 3, min: 0, max: 1 };// REP
      this.rules[290].opcodes[12] = { type: 2, children: [13,14,16] };// CAT
      this.rules[290].opcodes[13] = { type: 7, string: [101] };// TLS
      this.rules[290].opcodes[14] = { type: 3, min: 0, max: 1 };// REP
      this.rules[290].opcodes[15] = { type: 4, index: 393 };// RNM(SIGN)
      this.rules[290].opcodes[16] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[290].opcodes[17] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[290].opcodes[18] = { type: 4, index: 293 };// RNM(nanInfinity)
    
      /* doubleValue */
      this.rules[291].opcodes = [];
      this.rules[291].opcodes[0] = { type: 4, index: 290 };// RNM(decimalValue)
    
      /* singleValue */
      this.rules[292].opcodes = [];
      this.rules[292].opcodes[0] = { type: 4, index: 290 };// RNM(decimalValue)
    
      /* nanInfinity */
      this.rules[293].opcodes = [];
      this.rules[293].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[293].opcodes[1] = { type: 6, string: [78,97,78] };// TBS
      this.rules[293].opcodes[2] = { type: 6, string: [45,73,78,70] };// TBS
      this.rules[293].opcodes[3] = { type: 6, string: [73,78,70] };// TBS
    
      /* guidValue */
      this.rules[294].opcodes = [];
      this.rules[294].opcodes[0] = { type: 2, children: [1,3,4,6,7,9,10,12,13] };// CAT
      this.rules[294].opcodes[1] = { type: 3, min: 8, max: 8 };// REP
      this.rules[294].opcodes[2] = { type: 4, index: 440 };// RNM(HEXDIG)
      this.rules[294].opcodes[3] = { type: 7, string: [45] };// TLS
      this.rules[294].opcodes[4] = { type: 3, min: 4, max: 4 };// REP
      this.rules[294].opcodes[5] = { type: 4, index: 440 };// RNM(HEXDIG)
      this.rules[294].opcodes[6] = { type: 7, string: [45] };// TLS
      this.rules[294].opcodes[7] = { type: 3, min: 4, max: 4 };// REP
      this.rules[294].opcodes[8] = { type: 4, index: 440 };// RNM(HEXDIG)
      this.rules[294].opcodes[9] = { type: 7, string: [45] };// TLS
      this.rules[294].opcodes[10] = { type: 3, min: 4, max: 4 };// REP
      this.rules[294].opcodes[11] = { type: 4, index: 440 };// RNM(HEXDIG)
      this.rules[294].opcodes[12] = { type: 7, string: [45] };// TLS
      this.rules[294].opcodes[13] = { type: 3, min: 12, max: 12 };// REP
      this.rules[294].opcodes[14] = { type: 4, index: 440 };// RNM(HEXDIG)
    
      /* byteValue */
      this.rules[295].opcodes = [];
      this.rules[295].opcodes[0] = { type: 3, min: 1, max: 3 };// REP
      this.rules[295].opcodes[1] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* sbyteValue */
      this.rules[296].opcodes = [];
      this.rules[296].opcodes[0] = { type: 2, children: [1,3] };// CAT
      this.rules[296].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[296].opcodes[2] = { type: 4, index: 393 };// RNM(SIGN)
      this.rules[296].opcodes[3] = { type: 3, min: 1, max: 3 };// REP
      this.rules[296].opcodes[4] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* int16Value */
      this.rules[297].opcodes = [];
      this.rules[297].opcodes[0] = { type: 2, children: [1,3] };// CAT
      this.rules[297].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[297].opcodes[2] = { type: 4, index: 393 };// RNM(SIGN)
      this.rules[297].opcodes[3] = { type: 3, min: 1, max: 5 };// REP
      this.rules[297].opcodes[4] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* int32Value */
      this.rules[298].opcodes = [];
      this.rules[298].opcodes[0] = { type: 2, children: [1,3] };// CAT
      this.rules[298].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[298].opcodes[2] = { type: 4, index: 393 };// RNM(SIGN)
      this.rules[298].opcodes[3] = { type: 3, min: 1, max: 10 };// REP
      this.rules[298].opcodes[4] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* int64Value */
      this.rules[299].opcodes = [];
      this.rules[299].opcodes[0] = { type: 2, children: [1,3] };// CAT
      this.rules[299].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[299].opcodes[2] = { type: 4, index: 393 };// RNM(SIGN)
      this.rules[299].opcodes[3] = { type: 3, min: 1, max: 19 };// REP
      this.rules[299].opcodes[4] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* string */
      this.rules[300].opcodes = [];
      this.rules[300].opcodes[0] = { type: 2, children: [1,2,6] };// CAT
      this.rules[300].opcodes[1] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[300].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[300].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[300].opcodes[4] = { type: 4, index: 301 };// RNM(SQUOTE-in-string)
      this.rules[300].opcodes[5] = { type: 4, index: 426 };// RNM(pchar-no-SQUOTE)
      this.rules[300].opcodes[6] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* SQUOTE-in-string */
      this.rules[301].opcodes = [];
      this.rules[301].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[301].opcodes[1] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[301].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* dateValue */
      this.rules[302].opcodes = [];
      this.rules[302].opcodes[0] = { type: 2, children: [1,2,3,4,5] };// CAT
      this.rules[302].opcodes[1] = { type: 4, index: 311 };// RNM(year)
      this.rules[302].opcodes[2] = { type: 7, string: [45] };// TLS
      this.rules[302].opcodes[3] = { type: 4, index: 312 };// RNM(month)
      this.rules[302].opcodes[4] = { type: 7, string: [45] };// TLS
      this.rules[302].opcodes[5] = { type: 4, index: 313 };// RNM(day)
    
      /* dateTimeOffsetValue */
      this.rules[303].opcodes = [];
      this.rules[303].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8] };// CAT
      this.rules[303].opcodes[1] = { type: 4, index: 311 };// RNM(year)
      this.rules[303].opcodes[2] = { type: 7, string: [45] };// TLS
      this.rules[303].opcodes[3] = { type: 4, index: 312 };// RNM(month)
      this.rules[303].opcodes[4] = { type: 7, string: [45] };// TLS
      this.rules[303].opcodes[5] = { type: 4, index: 313 };// RNM(day)
      this.rules[303].opcodes[6] = { type: 7, string: [116] };// TLS
      this.rules[303].opcodes[7] = { type: 4, index: 307 };// RNM(timeOfDayValue)
      this.rules[303].opcodes[8] = { type: 1, children: [9,10] };// ALT
      this.rules[303].opcodes[9] = { type: 7, string: [122] };// TLS
      this.rules[303].opcodes[10] = { type: 2, children: [11,12,13,14] };// CAT
      this.rules[303].opcodes[11] = { type: 4, index: 393 };// RNM(SIGN)
      this.rules[303].opcodes[12] = { type: 4, index: 314 };// RNM(hour)
      this.rules[303].opcodes[13] = { type: 7, string: [58] };// TLS
      this.rules[303].opcodes[14] = { type: 4, index: 315 };// RNM(minute)
    
      /* dateTimeOffsetValueInUrl */
      this.rules[304].opcodes = [];
      this.rules[304].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8] };// CAT
      this.rules[304].opcodes[1] = { type: 4, index: 311 };// RNM(year)
      this.rules[304].opcodes[2] = { type: 7, string: [45] };// TLS
      this.rules[304].opcodes[3] = { type: 4, index: 312 };// RNM(month)
      this.rules[304].opcodes[4] = { type: 7, string: [45] };// TLS
      this.rules[304].opcodes[5] = { type: 4, index: 313 };// RNM(day)
      this.rules[304].opcodes[6] = { type: 7, string: [116] };// TLS
      this.rules[304].opcodes[7] = { type: 4, index: 308 };// RNM(timeOfDayValueInUrl)
      this.rules[304].opcodes[8] = { type: 1, children: [9,10] };// ALT
      this.rules[304].opcodes[9] = { type: 7, string: [122] };// TLS
      this.rules[304].opcodes[10] = { type: 2, children: [11,12,13,14] };// CAT
      this.rules[304].opcodes[11] = { type: 4, index: 393 };// RNM(SIGN)
      this.rules[304].opcodes[12] = { type: 4, index: 314 };// RNM(hour)
      this.rules[304].opcodes[13] = { type: 4, index: 389 };// RNM(COLON)
      this.rules[304].opcodes[14] = { type: 4, index: 315 };// RNM(minute)
    
      /* duration */
      this.rules[305].opcodes = [];
      this.rules[305].opcodes[0] = { type: 2, children: [1,3,4,5] };// CAT
      this.rules[305].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[305].opcodes[2] = { type: 7, string: [100,117,114,97,116,105,111,110] };// TLS
      this.rules[305].opcodes[3] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[305].opcodes[4] = { type: 4, index: 306 };// RNM(durationValue)
      this.rules[305].opcodes[5] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* durationValue */
      this.rules[306].opcodes = [];
      this.rules[306].opcodes[0] = { type: 2, children: [1,3,4,9] };// CAT
      this.rules[306].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[306].opcodes[2] = { type: 4, index: 393 };// RNM(SIGN)
      this.rules[306].opcodes[3] = { type: 7, string: [112] };// TLS
      this.rules[306].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[306].opcodes[5] = { type: 2, children: [6,8] };// CAT
      this.rules[306].opcodes[6] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[306].opcodes[7] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[306].opcodes[8] = { type: 7, string: [100] };// TLS
      this.rules[306].opcodes[9] = { type: 3, min: 0, max: 1 };// REP
      this.rules[306].opcodes[10] = { type: 2, children: [11,12,17,22] };// CAT
      this.rules[306].opcodes[11] = { type: 7, string: [116] };// TLS
      this.rules[306].opcodes[12] = { type: 3, min: 0, max: 1 };// REP
      this.rules[306].opcodes[13] = { type: 2, children: [14,16] };// CAT
      this.rules[306].opcodes[14] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[306].opcodes[15] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[306].opcodes[16] = { type: 7, string: [104] };// TLS
      this.rules[306].opcodes[17] = { type: 3, min: 0, max: 1 };// REP
      this.rules[306].opcodes[18] = { type: 2, children: [19,21] };// CAT
      this.rules[306].opcodes[19] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[306].opcodes[20] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[306].opcodes[21] = { type: 7, string: [109] };// TLS
      this.rules[306].opcodes[22] = { type: 3, min: 0, max: 1 };// REP
      this.rules[306].opcodes[23] = { type: 2, children: [24,26,31] };// CAT
      this.rules[306].opcodes[24] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[306].opcodes[25] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[306].opcodes[26] = { type: 3, min: 0, max: 1 };// REP
      this.rules[306].opcodes[27] = { type: 2, children: [28,29] };// CAT
      this.rules[306].opcodes[28] = { type: 7, string: [46] };// TLS
      this.rules[306].opcodes[29] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[306].opcodes[30] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[306].opcodes[31] = { type: 7, string: [115] };// TLS
    
      /* timeOfDayValue */
      this.rules[307].opcodes = [];
      this.rules[307].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[307].opcodes[1] = { type: 4, index: 314 };// RNM(hour)
      this.rules[307].opcodes[2] = { type: 7, string: [58] };// TLS
      this.rules[307].opcodes[3] = { type: 4, index: 315 };// RNM(minute)
      this.rules[307].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[307].opcodes[5] = { type: 2, children: [6,7,8] };// CAT
      this.rules[307].opcodes[6] = { type: 7, string: [58] };// TLS
      this.rules[307].opcodes[7] = { type: 4, index: 316 };// RNM(second)
      this.rules[307].opcodes[8] = { type: 3, min: 0, max: 1 };// REP
      this.rules[307].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[307].opcodes[10] = { type: 7, string: [46] };// TLS
      this.rules[307].opcodes[11] = { type: 4, index: 317 };// RNM(fractionalSeconds)
    
      /* timeOfDayValueInUrl */
      this.rules[308].opcodes = [];
      this.rules[308].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[308].opcodes[1] = { type: 4, index: 314 };// RNM(hour)
      this.rules[308].opcodes[2] = { type: 4, index: 389 };// RNM(COLON)
      this.rules[308].opcodes[3] = { type: 4, index: 315 };// RNM(minute)
      this.rules[308].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[308].opcodes[5] = { type: 2, children: [6,7,8] };// CAT
      this.rules[308].opcodes[6] = { type: 4, index: 389 };// RNM(COLON)
      this.rules[308].opcodes[7] = { type: 4, index: 316 };// RNM(second)
      this.rules[308].opcodes[8] = { type: 3, min: 0, max: 1 };// REP
      this.rules[308].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[308].opcodes[10] = { type: 7, string: [46] };// TLS
      this.rules[308].opcodes[11] = { type: 4, index: 317 };// RNM(fractionalSeconds)
    
      /* oneToNine */
      this.rules[309].opcodes = [];
      this.rules[309].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9] };// ALT
      this.rules[309].opcodes[1] = { type: 7, string: [49] };// TLS
      this.rules[309].opcodes[2] = { type: 7, string: [50] };// TLS
      this.rules[309].opcodes[3] = { type: 7, string: [51] };// TLS
      this.rules[309].opcodes[4] = { type: 7, string: [52] };// TLS
      this.rules[309].opcodes[5] = { type: 7, string: [53] };// TLS
      this.rules[309].opcodes[6] = { type: 7, string: [54] };// TLS
      this.rules[309].opcodes[7] = { type: 7, string: [55] };// TLS
      this.rules[309].opcodes[8] = { type: 7, string: [56] };// TLS
      this.rules[309].opcodes[9] = { type: 7, string: [57] };// TLS
    
      /* zeroToFiftyNine */
      this.rules[310].opcodes = [];
      this.rules[310].opcodes[0] = { type: 2, children: [1,8] };// CAT
      this.rules[310].opcodes[1] = { type: 1, children: [2,3,4,5,6,7] };// ALT
      this.rules[310].opcodes[2] = { type: 7, string: [48] };// TLS
      this.rules[310].opcodes[3] = { type: 7, string: [49] };// TLS
      this.rules[310].opcodes[4] = { type: 7, string: [50] };// TLS
      this.rules[310].opcodes[5] = { type: 7, string: [51] };// TLS
      this.rules[310].opcodes[6] = { type: 7, string: [52] };// TLS
      this.rules[310].opcodes[7] = { type: 7, string: [53] };// TLS
      this.rules[310].opcodes[8] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* year */
      this.rules[311].opcodes = [];
      this.rules[311].opcodes[0] = { type: 2, children: [1,3] };// CAT
      this.rules[311].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[311].opcodes[2] = { type: 7, string: [45] };// TLS
      this.rules[311].opcodes[3] = { type: 1, children: [4,8] };// ALT
      this.rules[311].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[311].opcodes[5] = { type: 7, string: [48] };// TLS
      this.rules[311].opcodes[6] = { type: 3, min: 3, max: 3 };// REP
      this.rules[311].opcodes[7] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[311].opcodes[8] = { type: 2, children: [9,10] };// CAT
      this.rules[311].opcodes[9] = { type: 4, index: 309 };// RNM(oneToNine)
      this.rules[311].opcodes[10] = { type: 3, min: 3, max: Infinity };// REP
      this.rules[311].opcodes[11] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* month */
      this.rules[312].opcodes = [];
      this.rules[312].opcodes[0] = { type: 1, children: [1,4] };// ALT
      this.rules[312].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[312].opcodes[2] = { type: 7, string: [48] };// TLS
      this.rules[312].opcodes[3] = { type: 4, index: 309 };// RNM(oneToNine)
      this.rules[312].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[312].opcodes[5] = { type: 7, string: [49] };// TLS
      this.rules[312].opcodes[6] = { type: 1, children: [7,8,9] };// ALT
      this.rules[312].opcodes[7] = { type: 7, string: [48] };// TLS
      this.rules[312].opcodes[8] = { type: 7, string: [49] };// TLS
      this.rules[312].opcodes[9] = { type: 7, string: [50] };// TLS
    
      /* day */
      this.rules[313].opcodes = [];
      this.rules[313].opcodes[0] = { type: 1, children: [1,4,9] };// ALT
      this.rules[313].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[313].opcodes[2] = { type: 7, string: [48] };// TLS
      this.rules[313].opcodes[3] = { type: 4, index: 309 };// RNM(oneToNine)
      this.rules[313].opcodes[4] = { type: 2, children: [5,8] };// CAT
      this.rules[313].opcodes[5] = { type: 1, children: [6,7] };// ALT
      this.rules[313].opcodes[6] = { type: 7, string: [49] };// TLS
      this.rules[313].opcodes[7] = { type: 7, string: [50] };// TLS
      this.rules[313].opcodes[8] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[313].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[313].opcodes[10] = { type: 7, string: [51] };// TLS
      this.rules[313].opcodes[11] = { type: 1, children: [12,13] };// ALT
      this.rules[313].opcodes[12] = { type: 7, string: [48] };// TLS
      this.rules[313].opcodes[13] = { type: 7, string: [49] };// TLS
    
      /* hour */
      this.rules[314].opcodes = [];
      this.rules[314].opcodes[0] = { type: 1, children: [1,6] };// ALT
      this.rules[314].opcodes[1] = { type: 2, children: [2,5] };// CAT
      this.rules[314].opcodes[2] = { type: 1, children: [3,4] };// ALT
      this.rules[314].opcodes[3] = { type: 7, string: [48] };// TLS
      this.rules[314].opcodes[4] = { type: 7, string: [49] };// TLS
      this.rules[314].opcodes[5] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[314].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[314].opcodes[7] = { type: 7, string: [50] };// TLS
      this.rules[314].opcodes[8] = { type: 1, children: [9,10,11,12] };// ALT
      this.rules[314].opcodes[9] = { type: 7, string: [48] };// TLS
      this.rules[314].opcodes[10] = { type: 7, string: [49] };// TLS
      this.rules[314].opcodes[11] = { type: 7, string: [50] };// TLS
      this.rules[314].opcodes[12] = { type: 7, string: [51] };// TLS
    
      /* minute */
      this.rules[315].opcodes = [];
      this.rules[315].opcodes[0] = { type: 4, index: 310 };// RNM(zeroToFiftyNine)
    
      /* second */
      this.rules[316].opcodes = [];
      this.rules[316].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[316].opcodes[1] = { type: 4, index: 310 };// RNM(zeroToFiftyNine)
      this.rules[316].opcodes[2] = { type: 7, string: [54,48] };// TLS
    
      /* fractionalSeconds */
      this.rules[317].opcodes = [];
      this.rules[317].opcodes[0] = { type: 3, min: 1, max: 12 };// REP
      this.rules[317].opcodes[1] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* enum */
      this.rules[318].opcodes = [];
      this.rules[318].opcodes[0] = { type: 2, children: [1,3,4,5] };// CAT
      this.rules[318].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[318].opcodes[2] = { type: 4, index: 237 };// RNM(qualifiedEnumTypeName)
      this.rules[318].opcodes[3] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[318].opcodes[4] = { type: 4, index: 319 };// RNM(enumValue)
      this.rules[318].opcodes[5] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* enumValue */
      this.rules[319].opcodes = [];
      this.rules[319].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[319].opcodes[1] = { type: 4, index: 320 };// RNM(singleEnumValue)
      this.rules[319].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[319].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[319].opcodes[4] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[319].opcodes[5] = { type: 4, index: 320 };// RNM(singleEnumValue)
    
      /* singleEnumValue */
      this.rules[320].opcodes = [];
      this.rules[320].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[320].opcodes[1] = { type: 4, index: 248 };// RNM(enumerationMember)
      this.rules[320].opcodes[2] = { type: 4, index: 321 };// RNM(enumMemberValue)
    
      /* enumMemberValue */
      this.rules[321].opcodes = [];
      this.rules[321].opcodes[0] = { type: 4, index: 299 };// RNM(int64Value)
    
      /* geographyCollection */
      this.rules[322].opcodes = [];
      this.rules[322].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[322].opcodes[1] = { type: 4, index: 357 };// RNM(geographyPrefix)
      this.rules[322].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[322].opcodes[3] = { type: 4, index: 323 };// RNM(fullCollectionLiteral)
      this.rules[322].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* fullCollectionLiteral */
      this.rules[323].opcodes = [];
      this.rules[323].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[323].opcodes[1] = { type: 4, index: 341 };// RNM(sridLiteral)
      this.rules[323].opcodes[2] = { type: 4, index: 324 };// RNM(collectionLiteral)
    
      /* collectionLiteral */
      this.rules[324].opcodes = [];
      this.rules[324].opcodes[0] = { type: 2, children: [1,2,3,7] };// CAT
      this.rules[324].opcodes[1] = { type: 7, string: [99,111,108,108,101,99,116,105,111,110,40] };// TLS
      this.rules[324].opcodes[2] = { type: 4, index: 325 };// RNM(geoLiteral)
      this.rules[324].opcodes[3] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[324].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[324].opcodes[5] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[324].opcodes[6] = { type: 4, index: 325 };// RNM(geoLiteral)
      this.rules[324].opcodes[7] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* geoLiteral */
      this.rules[325].opcodes = [];
      this.rules[325].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7] };// ALT
      this.rules[325].opcodes[1] = { type: 4, index: 324 };// RNM(collectionLiteral)
      this.rules[325].opcodes[2] = { type: 4, index: 328 };// RNM(lineStringLiteral)
      this.rules[325].opcodes[3] = { type: 4, index: 335 };// RNM(multiPointLiteral)
      this.rules[325].opcodes[4] = { type: 4, index: 332 };// RNM(multiLineStringLiteral)
      this.rules[325].opcodes[5] = { type: 4, index: 338 };// RNM(multiPolygonLiteral)
      this.rules[325].opcodes[6] = { type: 4, index: 342 };// RNM(pointLiteral)
      this.rules[325].opcodes[7] = { type: 4, index: 347 };// RNM(polygonLiteral)
    
      /* geographyLineString */
      this.rules[326].opcodes = [];
      this.rules[326].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[326].opcodes[1] = { type: 4, index: 357 };// RNM(geographyPrefix)
      this.rules[326].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[326].opcodes[3] = { type: 4, index: 327 };// RNM(fullLineStringLiteral)
      this.rules[326].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* fullLineStringLiteral */
      this.rules[327].opcodes = [];
      this.rules[327].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[327].opcodes[1] = { type: 4, index: 341 };// RNM(sridLiteral)
      this.rules[327].opcodes[2] = { type: 4, index: 328 };// RNM(lineStringLiteral)
    
      /* lineStringLiteral */
      this.rules[328].opcodes = [];
      this.rules[328].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[328].opcodes[1] = { type: 7, string: [108,105,110,101,115,116,114,105,110,103] };// TLS
      this.rules[328].opcodes[2] = { type: 4, index: 329 };// RNM(lineStringData)
    
      /* lineStringData */
      this.rules[329].opcodes = [];
      this.rules[329].opcodes[0] = { type: 2, children: [1,2,3,7] };// CAT
      this.rules[329].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[329].opcodes[2] = { type: 4, index: 344 };// RNM(positionLiteral)
      this.rules[329].opcodes[3] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[329].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[329].opcodes[5] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[329].opcodes[6] = { type: 4, index: 344 };// RNM(positionLiteral)
      this.rules[329].opcodes[7] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* geographyMultiLineString */
      this.rules[330].opcodes = [];
      this.rules[330].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[330].opcodes[1] = { type: 4, index: 357 };// RNM(geographyPrefix)
      this.rules[330].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[330].opcodes[3] = { type: 4, index: 331 };// RNM(fullMultiLineStringLiteral)
      this.rules[330].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* fullMultiLineStringLiteral */
      this.rules[331].opcodes = [];
      this.rules[331].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[331].opcodes[1] = { type: 4, index: 341 };// RNM(sridLiteral)
      this.rules[331].opcodes[2] = { type: 4, index: 332 };// RNM(multiLineStringLiteral)
    
      /* multiLineStringLiteral */
      this.rules[332].opcodes = [];
      this.rules[332].opcodes[0] = { type: 2, children: [1,2,9] };// CAT
      this.rules[332].opcodes[1] = { type: 7, string: [109,117,108,116,105,108,105,110,101,115,116,114,105,110,103,40] };// TLS
      this.rules[332].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[332].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[332].opcodes[4] = { type: 4, index: 329 };// RNM(lineStringData)
      this.rules[332].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[332].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[332].opcodes[7] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[332].opcodes[8] = { type: 4, index: 329 };// RNM(lineStringData)
      this.rules[332].opcodes[9] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* geographyMultiPoint */
      this.rules[333].opcodes = [];
      this.rules[333].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[333].opcodes[1] = { type: 4, index: 357 };// RNM(geographyPrefix)
      this.rules[333].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[333].opcodes[3] = { type: 4, index: 334 };// RNM(fullMultiPointLiteral)
      this.rules[333].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* fullMultiPointLiteral */
      this.rules[334].opcodes = [];
      this.rules[334].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[334].opcodes[1] = { type: 4, index: 341 };// RNM(sridLiteral)
      this.rules[334].opcodes[2] = { type: 4, index: 335 };// RNM(multiPointLiteral)
    
      /* multiPointLiteral */
      this.rules[335].opcodes = [];
      this.rules[335].opcodes[0] = { type: 2, children: [1,2,9] };// CAT
      this.rules[335].opcodes[1] = { type: 7, string: [109,117,108,116,105,112,111,105,110,116,40] };// TLS
      this.rules[335].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[335].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[335].opcodes[4] = { type: 4, index: 343 };// RNM(pointData)
      this.rules[335].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[335].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[335].opcodes[7] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[335].opcodes[8] = { type: 4, index: 343 };// RNM(pointData)
      this.rules[335].opcodes[9] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* geographyMultiPolygon */
      this.rules[336].opcodes = [];
      this.rules[336].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[336].opcodes[1] = { type: 4, index: 357 };// RNM(geographyPrefix)
      this.rules[336].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[336].opcodes[3] = { type: 4, index: 337 };// RNM(fullMultiPolygonLiteral)
      this.rules[336].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* fullMultiPolygonLiteral */
      this.rules[337].opcodes = [];
      this.rules[337].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[337].opcodes[1] = { type: 4, index: 341 };// RNM(sridLiteral)
      this.rules[337].opcodes[2] = { type: 4, index: 338 };// RNM(multiPolygonLiteral)
    
      /* multiPolygonLiteral */
      this.rules[338].opcodes = [];
      this.rules[338].opcodes[0] = { type: 2, children: [1,2,9] };// CAT
      this.rules[338].opcodes[1] = { type: 7, string: [109,117,108,116,105,112,111,108,121,103,111,110,40] };// TLS
      this.rules[338].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[338].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[338].opcodes[4] = { type: 4, index: 348 };// RNM(polygonData)
      this.rules[338].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[338].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[338].opcodes[7] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[338].opcodes[8] = { type: 4, index: 348 };// RNM(polygonData)
      this.rules[338].opcodes[9] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* geographyPoint */
      this.rules[339].opcodes = [];
      this.rules[339].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[339].opcodes[1] = { type: 4, index: 357 };// RNM(geographyPrefix)
      this.rules[339].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[339].opcodes[3] = { type: 4, index: 340 };// RNM(fullPointLiteral)
      this.rules[339].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* fullPointLiteral */
      this.rules[340].opcodes = [];
      this.rules[340].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[340].opcodes[1] = { type: 4, index: 341 };// RNM(sridLiteral)
      this.rules[340].opcodes[2] = { type: 4, index: 342 };// RNM(pointLiteral)
    
      /* sridLiteral */
      this.rules[341].opcodes = [];
      this.rules[341].opcodes[0] = { type: 2, children: [1,2,3,5] };// CAT
      this.rules[341].opcodes[1] = { type: 7, string: [115,114,105,100] };// TLS
      this.rules[341].opcodes[2] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[341].opcodes[3] = { type: 3, min: 1, max: 5 };// REP
      this.rules[341].opcodes[4] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[341].opcodes[5] = { type: 4, index: 394 };// RNM(SEMI)
    
      /* pointLiteral */
      this.rules[342].opcodes = [];
      this.rules[342].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[342].opcodes[1] = { type: 7, string: [112,111,105,110,116] };// TLS
      this.rules[342].opcodes[2] = { type: 4, index: 343 };// RNM(pointData)
    
      /* pointData */
      this.rules[343].opcodes = [];
      this.rules[343].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[343].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[343].opcodes[2] = { type: 4, index: 344 };// RNM(positionLiteral)
      this.rules[343].opcodes[3] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* positionLiteral */
      this.rules[344].opcodes = [];
      this.rules[344].opcodes[0] = { type: 2, children: [1,2,3,4,8] };// CAT
      this.rules[344].opcodes[1] = { type: 4, index: 291 };// RNM(doubleValue)
      this.rules[344].opcodes[2] = { type: 4, index: 443 };// RNM(SP)
      this.rules[344].opcodes[3] = { type: 4, index: 291 };// RNM(doubleValue)
      this.rules[344].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[344].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[344].opcodes[6] = { type: 4, index: 443 };// RNM(SP)
      this.rules[344].opcodes[7] = { type: 4, index: 291 };// RNM(doubleValue)
      this.rules[344].opcodes[8] = { type: 3, min: 0, max: 1 };// REP
      this.rules[344].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[344].opcodes[10] = { type: 4, index: 443 };// RNM(SP)
      this.rules[344].opcodes[11] = { type: 4, index: 291 };// RNM(doubleValue)
    
      /* geographyPolygon */
      this.rules[345].opcodes = [];
      this.rules[345].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[345].opcodes[1] = { type: 4, index: 357 };// RNM(geographyPrefix)
      this.rules[345].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[345].opcodes[3] = { type: 4, index: 346 };// RNM(fullPolygonLiteral)
      this.rules[345].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* fullPolygonLiteral */
      this.rules[346].opcodes = [];
      this.rules[346].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[346].opcodes[1] = { type: 4, index: 341 };// RNM(sridLiteral)
      this.rules[346].opcodes[2] = { type: 4, index: 347 };// RNM(polygonLiteral)
    
      /* polygonLiteral */
      this.rules[347].opcodes = [];
      this.rules[347].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[347].opcodes[1] = { type: 7, string: [112,111,108,121,103,111,110] };// TLS
      this.rules[347].opcodes[2] = { type: 4, index: 348 };// RNM(polygonData)
    
      /* polygonData */
      this.rules[348].opcodes = [];
      this.rules[348].opcodes[0] = { type: 2, children: [1,2,3,7] };// CAT
      this.rules[348].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[348].opcodes[2] = { type: 4, index: 349 };// RNM(ringLiteral)
      this.rules[348].opcodes[3] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[348].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[348].opcodes[5] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[348].opcodes[6] = { type: 4, index: 349 };// RNM(ringLiteral)
      this.rules[348].opcodes[7] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* ringLiteral */
      this.rules[349].opcodes = [];
      this.rules[349].opcodes[0] = { type: 2, children: [1,2,3,7] };// CAT
      this.rules[349].opcodes[1] = { type: 4, index: 397 };// RNM(OPEN)
      this.rules[349].opcodes[2] = { type: 4, index: 344 };// RNM(positionLiteral)
      this.rules[349].opcodes[3] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[349].opcodes[4] = { type: 2, children: [5,6] };// CAT
      this.rules[349].opcodes[5] = { type: 4, index: 390 };// RNM(COMMA)
      this.rules[349].opcodes[6] = { type: 4, index: 344 };// RNM(positionLiteral)
      this.rules[349].opcodes[7] = { type: 4, index: 398 };// RNM(CLOSE)
    
      /* geometryCollection */
      this.rules[350].opcodes = [];
      this.rules[350].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[350].opcodes[1] = { type: 4, index: 358 };// RNM(geometryPrefix)
      this.rules[350].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[350].opcodes[3] = { type: 4, index: 323 };// RNM(fullCollectionLiteral)
      this.rules[350].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* geometryLineString */
      this.rules[351].opcodes = [];
      this.rules[351].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[351].opcodes[1] = { type: 4, index: 358 };// RNM(geometryPrefix)
      this.rules[351].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[351].opcodes[3] = { type: 4, index: 327 };// RNM(fullLineStringLiteral)
      this.rules[351].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* geometryMultiLineString */
      this.rules[352].opcodes = [];
      this.rules[352].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[352].opcodes[1] = { type: 4, index: 358 };// RNM(geometryPrefix)
      this.rules[352].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[352].opcodes[3] = { type: 4, index: 331 };// RNM(fullMultiLineStringLiteral)
      this.rules[352].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* geometryMultiPoint */
      this.rules[353].opcodes = [];
      this.rules[353].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[353].opcodes[1] = { type: 4, index: 358 };// RNM(geometryPrefix)
      this.rules[353].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[353].opcodes[3] = { type: 4, index: 334 };// RNM(fullMultiPointLiteral)
      this.rules[353].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* geometryMultiPolygon */
      this.rules[354].opcodes = [];
      this.rules[354].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[354].opcodes[1] = { type: 4, index: 358 };// RNM(geometryPrefix)
      this.rules[354].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[354].opcodes[3] = { type: 4, index: 337 };// RNM(fullMultiPolygonLiteral)
      this.rules[354].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* geometryPoint */
      this.rules[355].opcodes = [];
      this.rules[355].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[355].opcodes[1] = { type: 4, index: 358 };// RNM(geometryPrefix)
      this.rules[355].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[355].opcodes[3] = { type: 4, index: 340 };// RNM(fullPointLiteral)
      this.rules[355].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* geometryPolygon */
      this.rules[356].opcodes = [];
      this.rules[356].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[356].opcodes[1] = { type: 4, index: 358 };// RNM(geometryPrefix)
      this.rules[356].opcodes[2] = { type: 4, index: 396 };// RNM(SQUOTE)
      this.rules[356].opcodes[3] = { type: 4, index: 346 };// RNM(fullPolygonLiteral)
      this.rules[356].opcodes[4] = { type: 4, index: 396 };// RNM(SQUOTE)
    
      /* geographyPrefix */
      this.rules[357].opcodes = [];
      this.rules[357].opcodes[0] = { type: 7, string: [103,101,111,103,114,97,112,104,121] };// TLS
    
      /* geometryPrefix */
      this.rules[358].opcodes = [];
      this.rules[358].opcodes[0] = { type: 7, string: [103,101,111,109,101,116,114,121] };// TLS
    
      /* header */
      this.rules[359].opcodes = [];
      this.rules[359].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7] };// ALT
      this.rules[359].opcodes[1] = { type: 4, index: 360 };// RNM(content-id)
      this.rules[359].opcodes[2] = { type: 4, index: 361 };// RNM(isolation)
      this.rules[359].opcodes[3] = { type: 4, index: 363 };// RNM(odata-entityid)
      this.rules[359].opcodes[4] = { type: 4, index: 364 };// RNM(odata-error)
      this.rules[359].opcodes[5] = { type: 4, index: 365 };// RNM(odata-maxversion)
      this.rules[359].opcodes[6] = { type: 4, index: 366 };// RNM(odata-version)
      this.rules[359].opcodes[7] = { type: 4, index: 367 };// RNM(prefer)
    
      /* content-id */
      this.rules[360].opcodes = [];
      this.rules[360].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[360].opcodes[1] = { type: 7, string: [99,111,110,116,101,110,116,45,105,100] };// TLS
      this.rules[360].opcodes[2] = { type: 7, string: [58] };// TLS
      this.rules[360].opcodes[3] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[360].opcodes[4] = { type: 4, index: 362 };// RNM(request-id)
    
      /* isolation */
      this.rules[361].opcodes = [];
      this.rules[361].opcodes[0] = { type: 2, children: [1,3,4,5,6] };// CAT
      this.rules[361].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[361].opcodes[2] = { type: 7, string: [111,100,97,116,97,45] };// TLS
      this.rules[361].opcodes[3] = { type: 7, string: [105,115,111,108,97,116,105,111,110] };// TLS
      this.rules[361].opcodes[4] = { type: 7, string: [58] };// TLS
      this.rules[361].opcodes[5] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[361].opcodes[6] = { type: 7, string: [115,110,97,112,115,104,111,116] };// TLS
    
      /* request-id */
      this.rules[362].opcodes = [];
      this.rules[362].opcodes[0] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[362].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
    
      /* odata-entityid */
      this.rules[363].opcodes = [];
      this.rules[363].opcodes[0] = { type: 2, children: [1,2,3,4] };// CAT
      this.rules[363].opcodes[1] = { type: 7, string: [111,100,97,116,97,45,101,110,116,105,116,121,105,100] };// TLS
      this.rules[363].opcodes[2] = { type: 7, string: [58] };// TLS
      this.rules[363].opcodes[3] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[363].opcodes[4] = { type: 4, index: 436 };// RNM(IRI-in-header)
    
      /* odata-error */
      this.rules[364].opcodes = [];
      this.rules[364].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7,8,9] };// CAT
      this.rules[364].opcodes[1] = { type: 7, string: [111,100,97,116,97,45,101,114,114,111,114] };// TLS
      this.rules[364].opcodes[2] = { type: 7, string: [58] };// TLS
      this.rules[364].opcodes[3] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[364].opcodes[4] = { type: 7, string: [123] };// TLS
      this.rules[364].opcodes[5] = { type: 4, index: 442 };// RNM(DQUOTE)
      this.rules[364].opcodes[6] = { type: 6, string: [99,111,100,101] };// TBS
      this.rules[364].opcodes[7] = { type: 4, index: 442 };// RNM(DQUOTE)
      this.rules[364].opcodes[8] = { type: 7, string: [58] };// TLS
      this.rules[364].opcodes[9] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[364].opcodes[10] = { type: 1, children: [11,12] };// ALT
      this.rules[364].opcodes[11] = { type: 4, index: 445 };// RNM(VCHAR)
      this.rules[364].opcodes[12] = { type: 4, index: 443 };// RNM(SP)
    
      /* odata-maxversion */
      this.rules[365].opcodes = [];
      this.rules[365].opcodes[0] = { type: 2, children: [1,2,3,4,6,7] };// CAT
      this.rules[365].opcodes[1] = { type: 7, string: [111,100,97,116,97,45,109,97,120,118,101,114,115,105,111,110] };// TLS
      this.rules[365].opcodes[2] = { type: 7, string: [58] };// TLS
      this.rules[365].opcodes[3] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[365].opcodes[4] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[365].opcodes[5] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[365].opcodes[6] = { type: 7, string: [46] };// TLS
      this.rules[365].opcodes[7] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[365].opcodes[8] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* odata-version */
      this.rules[366].opcodes = [];
      this.rules[366].opcodes[0] = { type: 2, children: [1,2,3,4,5] };// CAT
      this.rules[366].opcodes[1] = { type: 7, string: [111,100,97,116,97,45,118,101,114,115,105,111,110] };// TLS
      this.rules[366].opcodes[2] = { type: 7, string: [58] };// TLS
      this.rules[366].opcodes[3] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[366].opcodes[4] = { type: 7, string: [52,46,48] };// TLS
      this.rules[366].opcodes[5] = { type: 3, min: 0, max: 1 };// REP
      this.rules[366].opcodes[6] = { type: 4, index: 309 };// RNM(oneToNine)
    
      /* prefer */
      this.rules[367].opcodes = [];
      this.rules[367].opcodes[0] = { type: 2, children: [1,2,3,4,5] };// CAT
      this.rules[367].opcodes[1] = { type: 7, string: [112,114,101,102,101,114] };// TLS
      this.rules[367].opcodes[2] = { type: 7, string: [58] };// TLS
      this.rules[367].opcodes[3] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[367].opcodes[4] = { type: 4, index: 368 };// RNM(preference)
      this.rules[367].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[367].opcodes[6] = { type: 2, children: [7,8,9,10] };// CAT
      this.rules[367].opcodes[7] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[367].opcodes[8] = { type: 7, string: [44] };// TLS
      this.rules[367].opcodes[9] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[367].opcodes[10] = { type: 4, index: 368 };// RNM(preference)
    
      /* preference */
      this.rules[368].opcodes = [];
      this.rules[368].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9,10] };// ALT
      this.rules[368].opcodes[1] = { type: 4, index: 369 };// RNM(allowEntityReferencesPreference)
      this.rules[368].opcodes[2] = { type: 4, index: 370 };// RNM(callbackPreference)
      this.rules[368].opcodes[3] = { type: 4, index: 371 };// RNM(continueOnErrorPreference)
      this.rules[368].opcodes[4] = { type: 4, index: 372 };// RNM(includeAnnotationsPreference)
      this.rules[368].opcodes[5] = { type: 4, index: 376 };// RNM(maxpagesizePreference)
      this.rules[368].opcodes[6] = { type: 4, index: 377 };// RNM(omitValuesPreference)
      this.rules[368].opcodes[7] = { type: 4, index: 378 };// RNM(respondAsyncPreference)
      this.rules[368].opcodes[8] = { type: 4, index: 379 };// RNM(returnPreference)
      this.rules[368].opcodes[9] = { type: 4, index: 380 };// RNM(trackChangesPreference)
      this.rules[368].opcodes[10] = { type: 4, index: 381 };// RNM(waitPreference)
    
      /* allowEntityReferencesPreference */
      this.rules[369].opcodes = [];
      this.rules[369].opcodes[0] = { type: 2, children: [1,3] };// CAT
      this.rules[369].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[369].opcodes[2] = { type: 7, string: [111,100,97,116,97,46] };// TLS
      this.rules[369].opcodes[3] = { type: 7, string: [97,108,108,111,119,45,101,110,116,105,116,121,114,101,102,101,114,101,110,99,101,115] };// TLS
    
      /* callbackPreference */
      this.rules[370].opcodes = [];
      this.rules[370].opcodes[0] = { type: 2, children: [1,3,4,5,6,7,8,9,10,11] };// CAT
      this.rules[370].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[370].opcodes[2] = { type: 7, string: [111,100,97,116,97,46] };// TLS
      this.rules[370].opcodes[3] = { type: 7, string: [99,97,108,108,98,97,99,107] };// TLS
      this.rules[370].opcodes[4] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[370].opcodes[5] = { type: 7, string: [59] };// TLS
      this.rules[370].opcodes[6] = { type: 4, index: 383 };// RNM(OWS)
      this.rules[370].opcodes[7] = { type: 7, string: [117,114,108] };// TLS
      this.rules[370].opcodes[8] = { type: 4, index: 385 };// RNM(EQ-h)
      this.rules[370].opcodes[9] = { type: 4, index: 442 };// RNM(DQUOTE)
      this.rules[370].opcodes[10] = { type: 4, index: 399 };// RNM(URI)
      this.rules[370].opcodes[11] = { type: 4, index: 442 };// RNM(DQUOTE)
    
      /* continueOnErrorPreference */
      this.rules[371].opcodes = [];
      this.rules[371].opcodes[0] = { type: 2, children: [1,3,4] };// CAT
      this.rules[371].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[371].opcodes[2] = { type: 7, string: [111,100,97,116,97,46] };// TLS
      this.rules[371].opcodes[3] = { type: 7, string: [99,111,110,116,105,110,117,101,45,111,110,45,101,114,114,111,114] };// TLS
      this.rules[371].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[371].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[371].opcodes[6] = { type: 4, index: 385 };// RNM(EQ-h)
      this.rules[371].opcodes[7] = { type: 4, index: 289 };// RNM(booleanValue)
    
      /* includeAnnotationsPreference */
      this.rules[372].opcodes = [];
      this.rules[372].opcodes[0] = { type: 2, children: [1,3,4,5,6,7] };// CAT
      this.rules[372].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[372].opcodes[2] = { type: 7, string: [111,100,97,116,97,46] };// TLS
      this.rules[372].opcodes[3] = { type: 7, string: [105,110,99,108,117,100,101,45,97,110,110,111,116,97,116,105,111,110,115] };// TLS
      this.rules[372].opcodes[4] = { type: 4, index: 385 };// RNM(EQ-h)
      this.rules[372].opcodes[5] = { type: 4, index: 442 };// RNM(DQUOTE)
      this.rules[372].opcodes[6] = { type: 4, index: 373 };// RNM(annotationsList)
      this.rules[372].opcodes[7] = { type: 4, index: 442 };// RNM(DQUOTE)
    
      /* annotationsList */
      this.rules[373].opcodes = [];
      this.rules[373].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[373].opcodes[1] = { type: 4, index: 374 };// RNM(annotationIdentifier)
      this.rules[373].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[373].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[373].opcodes[4] = { type: 7, string: [44] };// TLS
      this.rules[373].opcodes[5] = { type: 4, index: 374 };// RNM(annotationIdentifier)
    
      /* annotationIdentifier */
      this.rules[374].opcodes = [];
      this.rules[374].opcodes[0] = { type: 2, children: [1,3,11] };// CAT
      this.rules[374].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[374].opcodes[2] = { type: 4, index: 375 };// RNM(excludeOperator)
      this.rules[374].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[374].opcodes[4] = { type: 4, index: 395 };// RNM(STAR)
      this.rules[374].opcodes[5] = { type: 2, children: [6,7,8] };// CAT
      this.rules[374].opcodes[6] = { type: 4, index: 240 };// RNM(namespace)
      this.rules[374].opcodes[7] = { type: 7, string: [46] };// TLS
      this.rules[374].opcodes[8] = { type: 1, children: [9,10] };// ALT
      this.rules[374].opcodes[9] = { type: 4, index: 249 };// RNM(termName)
      this.rules[374].opcodes[10] = { type: 4, index: 395 };// RNM(STAR)
      this.rules[374].opcodes[11] = { type: 3, min: 0, max: 1 };// REP
      this.rules[374].opcodes[12] = { type: 2, children: [13,14] };// CAT
      this.rules[374].opcodes[13] = { type: 7, string: [35] };// TLS
      this.rules[374].opcodes[14] = { type: 4, index: 250 };// RNM(odataIdentifier)
    
      /* excludeOperator */
      this.rules[375].opcodes = [];
      this.rules[375].opcodes[0] = { type: 7, string: [45] };// TLS
    
      /* maxpagesizePreference */
      this.rules[376].opcodes = [];
      this.rules[376].opcodes[0] = { type: 2, children: [1,3,4,5,6] };// CAT
      this.rules[376].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[376].opcodes[2] = { type: 7, string: [111,100,97,116,97,46] };// TLS
      this.rules[376].opcodes[3] = { type: 7, string: [109,97,120,112,97,103,101,115,105,122,101] };// TLS
      this.rules[376].opcodes[4] = { type: 4, index: 385 };// RNM(EQ-h)
      this.rules[376].opcodes[5] = { type: 4, index: 309 };// RNM(oneToNine)
      this.rules[376].opcodes[6] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[376].opcodes[7] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* omitValuesPreference */
      this.rules[377].opcodes = [];
      this.rules[377].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[377].opcodes[1] = { type: 7, string: [111,109,105,116,45,118,97,108,117,101,115] };// TLS
      this.rules[377].opcodes[2] = { type: 4, index: 385 };// RNM(EQ-h)
      this.rules[377].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[377].opcodes[4] = { type: 7, string: [110,117,108,108,115] };// TLS
      this.rules[377].opcodes[5] = { type: 7, string: [100,101,102,97,117,108,116,115] };// TLS
    
      /* respondAsyncPreference */
      this.rules[378].opcodes = [];
      this.rules[378].opcodes[0] = { type: 7, string: [114,101,115,112,111,110,100,45,97,115,121,110,99] };// TLS
    
      /* returnPreference */
      this.rules[379].opcodes = [];
      this.rules[379].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[379].opcodes[1] = { type: 7, string: [114,101,116,117,114,110] };// TLS
      this.rules[379].opcodes[2] = { type: 4, index: 385 };// RNM(EQ-h)
      this.rules[379].opcodes[3] = { type: 1, children: [4,5] };// ALT
      this.rules[379].opcodes[4] = { type: 6, string: [114,101,112,114,101,115,101,110,116,97,116,105,111,110] };// TBS
      this.rules[379].opcodes[5] = { type: 6, string: [109,105,110,105,109,97,108] };// TBS
    
      /* trackChangesPreference */
      this.rules[380].opcodes = [];
      this.rules[380].opcodes[0] = { type: 2, children: [1,3] };// CAT
      this.rules[380].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[380].opcodes[2] = { type: 7, string: [111,100,97,116,97,46] };// TLS
      this.rules[380].opcodes[3] = { type: 7, string: [116,114,97,99,107,45,99,104,97,110,103,101,115] };// TLS
    
      /* waitPreference */
      this.rules[381].opcodes = [];
      this.rules[381].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[381].opcodes[1] = { type: 7, string: [119,97,105,116] };// TLS
      this.rules[381].opcodes[2] = { type: 4, index: 385 };// RNM(EQ-h)
      this.rules[381].opcodes[3] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[381].opcodes[4] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* obs-text */
      this.rules[382].opcodes = [];
      this.rules[382].opcodes[0] = { type: 5, min: 128, max: 255 };// TRG
    
      /* OWS */
      this.rules[383].opcodes = [];
      this.rules[383].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[383].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[383].opcodes[2] = { type: 4, index: 443 };// RNM(SP)
      this.rules[383].opcodes[3] = { type: 4, index: 444 };// RNM(HTAB)
    
      /* BWS-h */
      this.rules[384].opcodes = [];
      this.rules[384].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[384].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[384].opcodes[2] = { type: 4, index: 443 };// RNM(SP)
      this.rules[384].opcodes[3] = { type: 4, index: 444 };// RNM(HTAB)
    
      /* EQ-h */
      this.rules[385].opcodes = [];
      this.rules[385].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[385].opcodes[1] = { type: 4, index: 384 };// RNM(BWS-h)
      this.rules[385].opcodes[2] = { type: 4, index: 391 };// RNM(EQ)
      this.rules[385].opcodes[3] = { type: 4, index: 384 };// RNM(BWS-h)
    
      /* RWS */
      this.rules[386].opcodes = [];
      this.rules[386].opcodes[0] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[386].opcodes[1] = { type: 1, children: [2,3,4,5] };// ALT
      this.rules[386].opcodes[2] = { type: 4, index: 443 };// RNM(SP)
      this.rules[386].opcodes[3] = { type: 4, index: 444 };// RNM(HTAB)
      this.rules[386].opcodes[4] = { type: 7, string: [37,50,48] };// TLS
      this.rules[386].opcodes[5] = { type: 7, string: [37,48,57] };// TLS
    
      /* BWS */
      this.rules[387].opcodes = [];
      this.rules[387].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[387].opcodes[1] = { type: 1, children: [2,3,4,5] };// ALT
      this.rules[387].opcodes[2] = { type: 4, index: 443 };// RNM(SP)
      this.rules[387].opcodes[3] = { type: 4, index: 444 };// RNM(HTAB)
      this.rules[387].opcodes[4] = { type: 7, string: [37,50,48] };// TLS
      this.rules[387].opcodes[5] = { type: 7, string: [37,48,57] };// TLS
    
      /* AT */
      this.rules[388].opcodes = [];
      this.rules[388].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[388].opcodes[1] = { type: 7, string: [64] };// TLS
      this.rules[388].opcodes[2] = { type: 7, string: [37,52,48] };// TLS
    
      /* COLON */
      this.rules[389].opcodes = [];
      this.rules[389].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[389].opcodes[1] = { type: 7, string: [58] };// TLS
      this.rules[389].opcodes[2] = { type: 7, string: [37,51,97] };// TLS
    
      /* COMMA */
      this.rules[390].opcodes = [];
      this.rules[390].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[390].opcodes[1] = { type: 7, string: [44] };// TLS
      this.rules[390].opcodes[2] = { type: 7, string: [37,50,99] };// TLS
    
      /* EQ */
      this.rules[391].opcodes = [];
      this.rules[391].opcodes[0] = { type: 7, string: [61] };// TLS
    
      /* HASH */
      this.rules[392].opcodes = [];
      this.rules[392].opcodes[0] = { type: 7, string: [37,50,51] };// TLS
    
      /* SIGN */
      this.rules[393].opcodes = [];
      this.rules[393].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[393].opcodes[1] = { type: 7, string: [43] };// TLS
      this.rules[393].opcodes[2] = { type: 7, string: [37,50,98] };// TLS
      this.rules[393].opcodes[3] = { type: 7, string: [45] };// TLS
    
      /* SEMI */
      this.rules[394].opcodes = [];
      this.rules[394].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[394].opcodes[1] = { type: 7, string: [59] };// TLS
      this.rules[394].opcodes[2] = { type: 7, string: [37,51,98] };// TLS
    
      /* STAR */
      this.rules[395].opcodes = [];
      this.rules[395].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[395].opcodes[1] = { type: 7, string: [42] };// TLS
      this.rules[395].opcodes[2] = { type: 7, string: [37,50,97] };// TLS
    
      /* SQUOTE */
      this.rules[396].opcodes = [];
      this.rules[396].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[396].opcodes[1] = { type: 7, string: [39] };// TLS
      this.rules[396].opcodes[2] = { type: 7, string: [37,50,55] };// TLS
    
      /* OPEN */
      this.rules[397].opcodes = [];
      this.rules[397].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[397].opcodes[1] = { type: 7, string: [40] };// TLS
      this.rules[397].opcodes[2] = { type: 7, string: [37,50,56] };// TLS
    
      /* CLOSE */
      this.rules[398].opcodes = [];
      this.rules[398].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[398].opcodes[1] = { type: 7, string: [41] };// TLS
      this.rules[398].opcodes[2] = { type: 7, string: [37,50,57] };// TLS
    
      /* URI */
      this.rules[399].opcodes = [];
      this.rules[399].opcodes[0] = { type: 2, children: [1,2,3,4,8] };// CAT
      this.rules[399].opcodes[1] = { type: 4, index: 401 };// RNM(scheme)
      this.rules[399].opcodes[2] = { type: 7, string: [58] };// TLS
      this.rules[399].opcodes[3] = { type: 4, index: 400 };// RNM(hier-part)
      this.rules[399].opcodes[4] = { type: 3, min: 0, max: 1 };// REP
      this.rules[399].opcodes[5] = { type: 2, children: [6,7] };// CAT
      this.rules[399].opcodes[6] = { type: 7, string: [63] };// TLS
      this.rules[399].opcodes[7] = { type: 4, index: 420 };// RNM(query)
      this.rules[399].opcodes[8] = { type: 3, min: 0, max: 1 };// REP
      this.rules[399].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[399].opcodes[10] = { type: 7, string: [35] };// TLS
      this.rules[399].opcodes[11] = { type: 4, index: 421 };// RNM(fragment)
    
      /* hier-part */
      this.rules[400].opcodes = [];
      this.rules[400].opcodes[0] = { type: 1, children: [1,5,6] };// ALT
      this.rules[400].opcodes[1] = { type: 2, children: [2,3,4] };// CAT
      this.rules[400].opcodes[2] = { type: 7, string: [47,47] };// TLS
      this.rules[400].opcodes[3] = { type: 4, index: 402 };// RNM(authority)
      this.rules[400].opcodes[4] = { type: 4, index: 414 };// RNM(path-abempty)
      this.rules[400].opcodes[5] = { type: 4, index: 415 };// RNM(path-absolute)
      this.rules[400].opcodes[6] = { type: 4, index: 416 };// RNM(path-rootless)
    
      /* scheme */
      this.rules[401].opcodes = [];
      this.rules[401].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[401].opcodes[1] = { type: 4, index: 438 };// RNM(ALPHA)
      this.rules[401].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[401].opcodes[3] = { type: 1, children: [4,5,6,7,8] };// ALT
      this.rules[401].opcodes[4] = { type: 4, index: 438 };// RNM(ALPHA)
      this.rules[401].opcodes[5] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[401].opcodes[6] = { type: 7, string: [43] };// TLS
      this.rules[401].opcodes[7] = { type: 7, string: [45] };// TLS
      this.rules[401].opcodes[8] = { type: 7, string: [46] };// TLS
    
      /* authority */
      this.rules[402].opcodes = [];
      this.rules[402].opcodes[0] = { type: 2, children: [1,5,6] };// CAT
      this.rules[402].opcodes[1] = { type: 3, min: 0, max: 1 };// REP
      this.rules[402].opcodes[2] = { type: 2, children: [3,4] };// CAT
      this.rules[402].opcodes[3] = { type: 4, index: 403 };// RNM(userinfo)
      this.rules[402].opcodes[4] = { type: 7, string: [64] };// TLS
      this.rules[402].opcodes[5] = { type: 4, index: 404 };// RNM(host)
      this.rules[402].opcodes[6] = { type: 3, min: 0, max: 1 };// REP
      this.rules[402].opcodes[7] = { type: 2, children: [8,9] };// CAT
      this.rules[402].opcodes[8] = { type: 7, string: [58] };// TLS
      this.rules[402].opcodes[9] = { type: 4, index: 405 };// RNM(port)
    
      /* userinfo */
      this.rules[403].opcodes = [];
      this.rules[403].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[403].opcodes[1] = { type: 1, children: [2,3,4,5] };// ALT
      this.rules[403].opcodes[2] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[403].opcodes[3] = { type: 4, index: 422 };// RNM(pct-encoded)
      this.rules[403].opcodes[4] = { type: 4, index: 424 };// RNM(sub-delims)
      this.rules[403].opcodes[5] = { type: 7, string: [58] };// TLS
    
      /* host */
      this.rules[404].opcodes = [];
      this.rules[404].opcodes[0] = { type: 1, children: [1,2,3] };// ALT
      this.rules[404].opcodes[1] = { type: 4, index: 406 };// RNM(IP-literal)
      this.rules[404].opcodes[2] = { type: 4, index: 411 };// RNM(IPv4address)
      this.rules[404].opcodes[3] = { type: 4, index: 413 };// RNM(reg-name)
    
      /* port */
      this.rules[405].opcodes = [];
      this.rules[405].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[405].opcodes[1] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* IP-literal */
      this.rules[406].opcodes = [];
      this.rules[406].opcodes[0] = { type: 2, children: [1,2,5] };// CAT
      this.rules[406].opcodes[1] = { type: 7, string: [91] };// TLS
      this.rules[406].opcodes[2] = { type: 1, children: [3,4] };// ALT
      this.rules[406].opcodes[3] = { type: 4, index: 408 };// RNM(IPv6address)
      this.rules[406].opcodes[4] = { type: 4, index: 407 };// RNM(IPvFuture)
      this.rules[406].opcodes[5] = { type: 7, string: [93] };// TLS
    
      /* IPvFuture */
      this.rules[407].opcodes = [];
      this.rules[407].opcodes[0] = { type: 2, children: [1,2,4,5] };// CAT
      this.rules[407].opcodes[1] = { type: 7, string: [118] };// TLS
      this.rules[407].opcodes[2] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[407].opcodes[3] = { type: 4, index: 440 };// RNM(HEXDIG)
      this.rules[407].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[407].opcodes[5] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[407].opcodes[6] = { type: 1, children: [7,8,9] };// ALT
      this.rules[407].opcodes[7] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[407].opcodes[8] = { type: 4, index: 424 };// RNM(sub-delims)
      this.rules[407].opcodes[9] = { type: 7, string: [58] };// TLS
    
      /* IPv6address */
      this.rules[408].opcodes = [];
      this.rules[408].opcodes[0] = { type: 1, children: [1,7,14,23,37,51,63,73,83] };// ALT
      this.rules[408].opcodes[1] = { type: 2, children: [2,6] };// CAT
      this.rules[408].opcodes[2] = { type: 3, min: 6, max: 6 };// REP
      this.rules[408].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[408].opcodes[4] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[5] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[6] = { type: 4, index: 410 };// RNM(ls32)
      this.rules[408].opcodes[7] = { type: 2, children: [8,9,13] };// CAT
      this.rules[408].opcodes[8] = { type: 7, string: [58,58] };// TLS
      this.rules[408].opcodes[9] = { type: 3, min: 5, max: 5 };// REP
      this.rules[408].opcodes[10] = { type: 2, children: [11,12] };// CAT
      this.rules[408].opcodes[11] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[12] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[13] = { type: 4, index: 410 };// RNM(ls32)
      this.rules[408].opcodes[14] = { type: 2, children: [15,17,18,22] };// CAT
      this.rules[408].opcodes[15] = { type: 3, min: 0, max: 1 };// REP
      this.rules[408].opcodes[16] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[17] = { type: 7, string: [58,58] };// TLS
      this.rules[408].opcodes[18] = { type: 3, min: 4, max: 4 };// REP
      this.rules[408].opcodes[19] = { type: 2, children: [20,21] };// CAT
      this.rules[408].opcodes[20] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[21] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[22] = { type: 4, index: 410 };// RNM(ls32)
      this.rules[408].opcodes[23] = { type: 2, children: [24,31,32,36] };// CAT
      this.rules[408].opcodes[24] = { type: 3, min: 0, max: 1 };// REP
      this.rules[408].opcodes[25] = { type: 2, children: [26,30] };// CAT
      this.rules[408].opcodes[26] = { type: 3, min: 0, max: 1 };// REP
      this.rules[408].opcodes[27] = { type: 2, children: [28,29] };// CAT
      this.rules[408].opcodes[28] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[29] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[30] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[31] = { type: 7, string: [58,58] };// TLS
      this.rules[408].opcodes[32] = { type: 3, min: 3, max: 3 };// REP
      this.rules[408].opcodes[33] = { type: 2, children: [34,35] };// CAT
      this.rules[408].opcodes[34] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[35] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[36] = { type: 4, index: 410 };// RNM(ls32)
      this.rules[408].opcodes[37] = { type: 2, children: [38,45,46,50] };// CAT
      this.rules[408].opcodes[38] = { type: 3, min: 0, max: 1 };// REP
      this.rules[408].opcodes[39] = { type: 2, children: [40,44] };// CAT
      this.rules[408].opcodes[40] = { type: 3, min: 0, max: 2 };// REP
      this.rules[408].opcodes[41] = { type: 2, children: [42,43] };// CAT
      this.rules[408].opcodes[42] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[43] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[44] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[45] = { type: 7, string: [58,58] };// TLS
      this.rules[408].opcodes[46] = { type: 3, min: 2, max: 2 };// REP
      this.rules[408].opcodes[47] = { type: 2, children: [48,49] };// CAT
      this.rules[408].opcodes[48] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[49] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[50] = { type: 4, index: 410 };// RNM(ls32)
      this.rules[408].opcodes[51] = { type: 2, children: [52,59,60,61,62] };// CAT
      this.rules[408].opcodes[52] = { type: 3, min: 0, max: 1 };// REP
      this.rules[408].opcodes[53] = { type: 2, children: [54,58] };// CAT
      this.rules[408].opcodes[54] = { type: 3, min: 0, max: 3 };// REP
      this.rules[408].opcodes[55] = { type: 2, children: [56,57] };// CAT
      this.rules[408].opcodes[56] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[57] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[58] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[59] = { type: 7, string: [58,58] };// TLS
      this.rules[408].opcodes[60] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[61] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[62] = { type: 4, index: 410 };// RNM(ls32)
      this.rules[408].opcodes[63] = { type: 2, children: [64,71,72] };// CAT
      this.rules[408].opcodes[64] = { type: 3, min: 0, max: 1 };// REP
      this.rules[408].opcodes[65] = { type: 2, children: [66,70] };// CAT
      this.rules[408].opcodes[66] = { type: 3, min: 0, max: 4 };// REP
      this.rules[408].opcodes[67] = { type: 2, children: [68,69] };// CAT
      this.rules[408].opcodes[68] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[69] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[70] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[71] = { type: 7, string: [58,58] };// TLS
      this.rules[408].opcodes[72] = { type: 4, index: 410 };// RNM(ls32)
      this.rules[408].opcodes[73] = { type: 2, children: [74,81,82] };// CAT
      this.rules[408].opcodes[74] = { type: 3, min: 0, max: 1 };// REP
      this.rules[408].opcodes[75] = { type: 2, children: [76,80] };// CAT
      this.rules[408].opcodes[76] = { type: 3, min: 0, max: 5 };// REP
      this.rules[408].opcodes[77] = { type: 2, children: [78,79] };// CAT
      this.rules[408].opcodes[78] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[79] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[80] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[81] = { type: 7, string: [58,58] };// TLS
      this.rules[408].opcodes[82] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[83] = { type: 2, children: [84,91] };// CAT
      this.rules[408].opcodes[84] = { type: 3, min: 0, max: 1 };// REP
      this.rules[408].opcodes[85] = { type: 2, children: [86,90] };// CAT
      this.rules[408].opcodes[86] = { type: 3, min: 0, max: 6 };// REP
      this.rules[408].opcodes[87] = { type: 2, children: [88,89] };// CAT
      this.rules[408].opcodes[88] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[89] = { type: 7, string: [58] };// TLS
      this.rules[408].opcodes[90] = { type: 4, index: 409 };// RNM(h16)
      this.rules[408].opcodes[91] = { type: 7, string: [58,58] };// TLS
    
      /* h16 */
      this.rules[409].opcodes = [];
      this.rules[409].opcodes[0] = { type: 3, min: 1, max: 4 };// REP
      this.rules[409].opcodes[1] = { type: 4, index: 440 };// RNM(HEXDIG)
    
      /* ls32 */
      this.rules[410].opcodes = [];
      this.rules[410].opcodes[0] = { type: 1, children: [1,5] };// ALT
      this.rules[410].opcodes[1] = { type: 2, children: [2,3,4] };// CAT
      this.rules[410].opcodes[2] = { type: 4, index: 409 };// RNM(h16)
      this.rules[410].opcodes[3] = { type: 7, string: [58] };// TLS
      this.rules[410].opcodes[4] = { type: 4, index: 409 };// RNM(h16)
      this.rules[410].opcodes[5] = { type: 4, index: 411 };// RNM(IPv4address)
    
      /* IPv4address */
      this.rules[411].opcodes = [];
      this.rules[411].opcodes[0] = { type: 2, children: [1,2,3,4,5,6,7] };// CAT
      this.rules[411].opcodes[1] = { type: 4, index: 412 };// RNM(dec-octet)
      this.rules[411].opcodes[2] = { type: 7, string: [46] };// TLS
      this.rules[411].opcodes[3] = { type: 4, index: 412 };// RNM(dec-octet)
      this.rules[411].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[411].opcodes[5] = { type: 4, index: 412 };// RNM(dec-octet)
      this.rules[411].opcodes[6] = { type: 7, string: [46] };// TLS
      this.rules[411].opcodes[7] = { type: 4, index: 412 };// RNM(dec-octet)
    
      /* dec-octet */
      this.rules[412].opcodes = [];
      this.rules[412].opcodes[0] = { type: 1, children: [1,5,9,12,15] };// ALT
      this.rules[412].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[412].opcodes[2] = { type: 7, string: [49] };// TLS
      this.rules[412].opcodes[3] = { type: 3, min: 2, max: 2 };// REP
      this.rules[412].opcodes[4] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[412].opcodes[5] = { type: 2, children: [6,7,8] };// CAT
      this.rules[412].opcodes[6] = { type: 7, string: [50] };// TLS
      this.rules[412].opcodes[7] = { type: 5, min: 48, max: 52 };// TRG
      this.rules[412].opcodes[8] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[412].opcodes[9] = { type: 2, children: [10,11] };// CAT
      this.rules[412].opcodes[10] = { type: 7, string: [50,53] };// TLS
      this.rules[412].opcodes[11] = { type: 5, min: 48, max: 53 };// TRG
      this.rules[412].opcodes[12] = { type: 2, children: [13,14] };// CAT
      this.rules[412].opcodes[13] = { type: 5, min: 49, max: 57 };// TRG
      this.rules[412].opcodes[14] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[412].opcodes[15] = { type: 4, index: 439 };// RNM(DIGIT)
    
      /* reg-name */
      this.rules[413].opcodes = [];
      this.rules[413].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[413].opcodes[1] = { type: 1, children: [2,3,4] };// ALT
      this.rules[413].opcodes[2] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[413].opcodes[3] = { type: 4, index: 422 };// RNM(pct-encoded)
      this.rules[413].opcodes[4] = { type: 4, index: 424 };// RNM(sub-delims)
    
      /* path-abempty */
      this.rules[414].opcodes = [];
      this.rules[414].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[414].opcodes[1] = { type: 2, children: [2,3] };// CAT
      this.rules[414].opcodes[2] = { type: 7, string: [47] };// TLS
      this.rules[414].opcodes[3] = { type: 4, index: 417 };// RNM(segment)
    
      /* path-absolute */
      this.rules[415].opcodes = [];
      this.rules[415].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[415].opcodes[1] = { type: 7, string: [47] };// TLS
      this.rules[415].opcodes[2] = { type: 3, min: 0, max: 1 };// REP
      this.rules[415].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[415].opcodes[4] = { type: 4, index: 418 };// RNM(segment-nz)
      this.rules[415].opcodes[5] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[415].opcodes[6] = { type: 2, children: [7,8] };// CAT
      this.rules[415].opcodes[7] = { type: 7, string: [47] };// TLS
      this.rules[415].opcodes[8] = { type: 4, index: 417 };// RNM(segment)
    
      /* path-rootless */
      this.rules[416].opcodes = [];
      this.rules[416].opcodes[0] = { type: 2, children: [1,2] };// CAT
      this.rules[416].opcodes[1] = { type: 4, index: 418 };// RNM(segment-nz)
      this.rules[416].opcodes[2] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[416].opcodes[3] = { type: 2, children: [4,5] };// CAT
      this.rules[416].opcodes[4] = { type: 7, string: [47] };// TLS
      this.rules[416].opcodes[5] = { type: 4, index: 417 };// RNM(segment)
    
      /* segment */
      this.rules[417].opcodes = [];
      this.rules[417].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[417].opcodes[1] = { type: 4, index: 419 };// RNM(pchar)
    
      /* segment-nz */
      this.rules[418].opcodes = [];
      this.rules[418].opcodes[0] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[418].opcodes[1] = { type: 4, index: 419 };// RNM(pchar)
    
      /* pchar */
      this.rules[419].opcodes = [];
      this.rules[419].opcodes[0] = { type: 1, children: [1,2,3,4,5] };// ALT
      this.rules[419].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[419].opcodes[2] = { type: 4, index: 422 };// RNM(pct-encoded)
      this.rules[419].opcodes[3] = { type: 4, index: 424 };// RNM(sub-delims)
      this.rules[419].opcodes[4] = { type: 7, string: [58] };// TLS
      this.rules[419].opcodes[5] = { type: 7, string: [64] };// TLS
    
      /* query */
      this.rules[420].opcodes = [];
      this.rules[420].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[420].opcodes[1] = { type: 1, children: [2,3,4] };// ALT
      this.rules[420].opcodes[2] = { type: 4, index: 419 };// RNM(pchar)
      this.rules[420].opcodes[3] = { type: 7, string: [47] };// TLS
      this.rules[420].opcodes[4] = { type: 7, string: [63] };// TLS
    
      /* fragment */
      this.rules[421].opcodes = [];
      this.rules[421].opcodes[0] = { type: 3, min: 0, max: Infinity };// REP
      this.rules[421].opcodes[1] = { type: 1, children: [2,3,4] };// ALT
      this.rules[421].opcodes[2] = { type: 4, index: 419 };// RNM(pchar)
      this.rules[421].opcodes[3] = { type: 7, string: [47] };// TLS
      this.rules[421].opcodes[4] = { type: 7, string: [63] };// TLS
    
      /* pct-encoded */
      this.rules[422].opcodes = [];
      this.rules[422].opcodes[0] = { type: 2, children: [1,2,3] };// CAT
      this.rules[422].opcodes[1] = { type: 7, string: [37] };// TLS
      this.rules[422].opcodes[2] = { type: 4, index: 440 };// RNM(HEXDIG)
      this.rules[422].opcodes[3] = { type: 4, index: 440 };// RNM(HEXDIG)
    
      /* unreserved */
      this.rules[423].opcodes = [];
      this.rules[423].opcodes[0] = { type: 1, children: [1,2,3,4,5,6] };// ALT
      this.rules[423].opcodes[1] = { type: 4, index: 438 };// RNM(ALPHA)
      this.rules[423].opcodes[2] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[423].opcodes[3] = { type: 7, string: [45] };// TLS
      this.rules[423].opcodes[4] = { type: 7, string: [46] };// TLS
      this.rules[423].opcodes[5] = { type: 7, string: [95] };// TLS
      this.rules[423].opcodes[6] = { type: 7, string: [126] };// TLS
    
      /* sub-delims */
      this.rules[424].opcodes = [];
      this.rules[424].opcodes[0] = { type: 1, children: [1,2,3,4,5] };// ALT
      this.rules[424].opcodes[1] = { type: 7, string: [36] };// TLS
      this.rules[424].opcodes[2] = { type: 7, string: [38] };// TLS
      this.rules[424].opcodes[3] = { type: 7, string: [39] };// TLS
      this.rules[424].opcodes[4] = { type: 7, string: [61] };// TLS
      this.rules[424].opcodes[5] = { type: 4, index: 425 };// RNM(other-delims)
    
      /* other-delims */
      this.rules[425].opcodes = [];
      this.rules[425].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7] };// ALT
      this.rules[425].opcodes[1] = { type: 7, string: [33] };// TLS
      this.rules[425].opcodes[2] = { type: 7, string: [40] };// TLS
      this.rules[425].opcodes[3] = { type: 7, string: [41] };// TLS
      this.rules[425].opcodes[4] = { type: 7, string: [42] };// TLS
      this.rules[425].opcodes[5] = { type: 7, string: [43] };// TLS
      this.rules[425].opcodes[6] = { type: 7, string: [44] };// TLS
      this.rules[425].opcodes[7] = { type: 7, string: [59] };// TLS
    
      /* pchar-no-SQUOTE */
      this.rules[426].opcodes = [];
      this.rules[426].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8] };// ALT
      this.rules[426].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[426].opcodes[2] = { type: 4, index: 427 };// RNM(pct-encoded-no-SQUOTE)
      this.rules[426].opcodes[3] = { type: 4, index: 425 };// RNM(other-delims)
      this.rules[426].opcodes[4] = { type: 7, string: [36] };// TLS
      this.rules[426].opcodes[5] = { type: 7, string: [38] };// TLS
      this.rules[426].opcodes[6] = { type: 7, string: [61] };// TLS
      this.rules[426].opcodes[7] = { type: 7, string: [58] };// TLS
      this.rules[426].opcodes[8] = { type: 7, string: [64] };// TLS
    
      /* pct-encoded-no-SQUOTE */
      this.rules[427].opcodes = [];
      this.rules[427].opcodes[0] = { type: 1, children: [1,14] };// ALT
      this.rules[427].opcodes[1] = { type: 2, children: [2,3,13] };// CAT
      this.rules[427].opcodes[2] = { type: 7, string: [37] };// TLS
      this.rules[427].opcodes[3] = { type: 1, children: [4,5,6,7,8,9,10,11,12] };// ALT
      this.rules[427].opcodes[4] = { type: 7, string: [48] };// TLS
      this.rules[427].opcodes[5] = { type: 7, string: [49] };// TLS
      this.rules[427].opcodes[6] = { type: 7, string: [51] };// TLS
      this.rules[427].opcodes[7] = { type: 7, string: [52] };// TLS
      this.rules[427].opcodes[8] = { type: 7, string: [53] };// TLS
      this.rules[427].opcodes[9] = { type: 7, string: [54] };// TLS
      this.rules[427].opcodes[10] = { type: 7, string: [56] };// TLS
      this.rules[427].opcodes[11] = { type: 7, string: [57] };// TLS
      this.rules[427].opcodes[12] = { type: 4, index: 441 };// RNM(A-to-F)
      this.rules[427].opcodes[13] = { type: 4, index: 440 };// RNM(HEXDIG)
      this.rules[427].opcodes[14] = { type: 2, children: [15,16,17] };// CAT
      this.rules[427].opcodes[15] = { type: 7, string: [37] };// TLS
      this.rules[427].opcodes[16] = { type: 7, string: [50] };// TLS
      this.rules[427].opcodes[17] = { type: 1, children: [18,19,20,21,22,23,24,25,26,27] };// ALT
      this.rules[427].opcodes[18] = { type: 7, string: [48] };// TLS
      this.rules[427].opcodes[19] = { type: 7, string: [49] };// TLS
      this.rules[427].opcodes[20] = { type: 7, string: [50] };// TLS
      this.rules[427].opcodes[21] = { type: 7, string: [51] };// TLS
      this.rules[427].opcodes[22] = { type: 7, string: [52] };// TLS
      this.rules[427].opcodes[23] = { type: 7, string: [53] };// TLS
      this.rules[427].opcodes[24] = { type: 7, string: [54] };// TLS
      this.rules[427].opcodes[25] = { type: 7, string: [56] };// TLS
      this.rules[427].opcodes[26] = { type: 7, string: [57] };// TLS
      this.rules[427].opcodes[27] = { type: 4, index: 441 };// RNM(A-to-F)
    
      /* qchar-no-AMP */
      this.rules[428].opcodes = [];
      this.rules[428].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9,10] };// ALT
      this.rules[428].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[428].opcodes[2] = { type: 4, index: 422 };// RNM(pct-encoded)
      this.rules[428].opcodes[3] = { type: 4, index: 425 };// RNM(other-delims)
      this.rules[428].opcodes[4] = { type: 7, string: [58] };// TLS
      this.rules[428].opcodes[5] = { type: 7, string: [64] };// TLS
      this.rules[428].opcodes[6] = { type: 7, string: [47] };// TLS
      this.rules[428].opcodes[7] = { type: 7, string: [63] };// TLS
      this.rules[428].opcodes[8] = { type: 7, string: [36] };// TLS
      this.rules[428].opcodes[9] = { type: 7, string: [39] };// TLS
      this.rules[428].opcodes[10] = { type: 7, string: [61] };// TLS
    
      /* qchar-no-AMP-EQ */
      this.rules[429].opcodes = [];
      this.rules[429].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9] };// ALT
      this.rules[429].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[429].opcodes[2] = { type: 4, index: 422 };// RNM(pct-encoded)
      this.rules[429].opcodes[3] = { type: 4, index: 425 };// RNM(other-delims)
      this.rules[429].opcodes[4] = { type: 7, string: [58] };// TLS
      this.rules[429].opcodes[5] = { type: 7, string: [64] };// TLS
      this.rules[429].opcodes[6] = { type: 7, string: [47] };// TLS
      this.rules[429].opcodes[7] = { type: 7, string: [63] };// TLS
      this.rules[429].opcodes[8] = { type: 7, string: [36] };// TLS
      this.rules[429].opcodes[9] = { type: 7, string: [39] };// TLS
    
      /* qchar-no-AMP-EQ-AT-DOLLAR */
      this.rules[430].opcodes = [];
      this.rules[430].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7] };// ALT
      this.rules[430].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[430].opcodes[2] = { type: 4, index: 422 };// RNM(pct-encoded)
      this.rules[430].opcodes[3] = { type: 4, index: 425 };// RNM(other-delims)
      this.rules[430].opcodes[4] = { type: 7, string: [58] };// TLS
      this.rules[430].opcodes[5] = { type: 7, string: [47] };// TLS
      this.rules[430].opcodes[6] = { type: 7, string: [63] };// TLS
      this.rules[430].opcodes[7] = { type: 7, string: [39] };// TLS
    
      /* qchar-no-AMP-SQUOTE */
      this.rules[431].opcodes = [];
      this.rules[431].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9] };// ALT
      this.rules[431].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[431].opcodes[2] = { type: 4, index: 422 };// RNM(pct-encoded)
      this.rules[431].opcodes[3] = { type: 4, index: 425 };// RNM(other-delims)
      this.rules[431].opcodes[4] = { type: 7, string: [58] };// TLS
      this.rules[431].opcodes[5] = { type: 7, string: [64] };// TLS
      this.rules[431].opcodes[6] = { type: 7, string: [47] };// TLS
      this.rules[431].opcodes[7] = { type: 7, string: [63] };// TLS
      this.rules[431].opcodes[8] = { type: 7, string: [36] };// TLS
      this.rules[431].opcodes[9] = { type: 7, string: [61] };// TLS
    
      /* qchar-no-AMP-DQUOTE */
      this.rules[432].opcodes = [];
      this.rules[432].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9,10] };// ALT
      this.rules[432].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[432].opcodes[2] = { type: 4, index: 435 };// RNM(pct-encoded-no-DQUOTE)
      this.rules[432].opcodes[3] = { type: 4, index: 425 };// RNM(other-delims)
      this.rules[432].opcodes[4] = { type: 7, string: [58] };// TLS
      this.rules[432].opcodes[5] = { type: 7, string: [64] };// TLS
      this.rules[432].opcodes[6] = { type: 7, string: [47] };// TLS
      this.rules[432].opcodes[7] = { type: 7, string: [63] };// TLS
      this.rules[432].opcodes[8] = { type: 7, string: [36] };// TLS
      this.rules[432].opcodes[9] = { type: 7, string: [39] };// TLS
      this.rules[432].opcodes[10] = { type: 7, string: [61] };// TLS
    
      /* qchar-unescaped */
      this.rules[433].opcodes = [];
      this.rules[433].opcodes[0] = { type: 1, children: [1,2,3,4,5,6,7,8,9,10] };// ALT
      this.rules[433].opcodes[1] = { type: 4, index: 423 };// RNM(unreserved)
      this.rules[433].opcodes[2] = { type: 4, index: 434 };// RNM(pct-encoded-unescaped)
      this.rules[433].opcodes[3] = { type: 4, index: 425 };// RNM(other-delims)
      this.rules[433].opcodes[4] = { type: 7, string: [58] };// TLS
      this.rules[433].opcodes[5] = { type: 7, string: [64] };// TLS
      this.rules[433].opcodes[6] = { type: 7, string: [47] };// TLS
      this.rules[433].opcodes[7] = { type: 7, string: [63] };// TLS
      this.rules[433].opcodes[8] = { type: 7, string: [36] };// TLS
      this.rules[433].opcodes[9] = { type: 7, string: [39] };// TLS
      this.rules[433].opcodes[10] = { type: 7, string: [61] };// TLS
    
      /* pct-encoded-unescaped */
      this.rules[434].opcodes = [];
      this.rules[434].opcodes[0] = { type: 1, children: [1,14,28] };// ALT
      this.rules[434].opcodes[1] = { type: 2, children: [2,3,13] };// CAT
      this.rules[434].opcodes[2] = { type: 7, string: [37] };// TLS
      this.rules[434].opcodes[3] = { type: 1, children: [4,5,6,7,8,9,10,11,12] };// ALT
      this.rules[434].opcodes[4] = { type: 7, string: [48] };// TLS
      this.rules[434].opcodes[5] = { type: 7, string: [49] };// TLS
      this.rules[434].opcodes[6] = { type: 7, string: [51] };// TLS
      this.rules[434].opcodes[7] = { type: 7, string: [52] };// TLS
      this.rules[434].opcodes[8] = { type: 7, string: [54] };// TLS
      this.rules[434].opcodes[9] = { type: 7, string: [55] };// TLS
      this.rules[434].opcodes[10] = { type: 7, string: [56] };// TLS
      this.rules[434].opcodes[11] = { type: 7, string: [57] };// TLS
      this.rules[434].opcodes[12] = { type: 4, index: 441 };// RNM(A-to-F)
      this.rules[434].opcodes[13] = { type: 4, index: 440 };// RNM(HEXDIG)
      this.rules[434].opcodes[14] = { type: 2, children: [15,16,17] };// CAT
      this.rules[434].opcodes[15] = { type: 7, string: [37] };// TLS
      this.rules[434].opcodes[16] = { type: 7, string: [50] };// TLS
      this.rules[434].opcodes[17] = { type: 1, children: [18,19,20,21,22,23,24,25,26,27] };// ALT
      this.rules[434].opcodes[18] = { type: 7, string: [48] };// TLS
      this.rules[434].opcodes[19] = { type: 7, string: [49] };// TLS
      this.rules[434].opcodes[20] = { type: 7, string: [51] };// TLS
      this.rules[434].opcodes[21] = { type: 7, string: [52] };// TLS
      this.rules[434].opcodes[22] = { type: 7, string: [53] };// TLS
      this.rules[434].opcodes[23] = { type: 7, string: [54] };// TLS
      this.rules[434].opcodes[24] = { type: 7, string: [55] };// TLS
      this.rules[434].opcodes[25] = { type: 7, string: [56] };// TLS
      this.rules[434].opcodes[26] = { type: 7, string: [57] };// TLS
      this.rules[434].opcodes[27] = { type: 4, index: 441 };// RNM(A-to-F)
      this.rules[434].opcodes[28] = { type: 2, children: [29,30,31] };// CAT
      this.rules[434].opcodes[29] = { type: 7, string: [37] };// TLS
      this.rules[434].opcodes[30] = { type: 7, string: [53] };// TLS
      this.rules[434].opcodes[31] = { type: 1, children: [32,33,34,35,36,37] };// ALT
      this.rules[434].opcodes[32] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[434].opcodes[33] = { type: 7, string: [97] };// TLS
      this.rules[434].opcodes[34] = { type: 7, string: [98] };// TLS
      this.rules[434].opcodes[35] = { type: 7, string: [100] };// TLS
      this.rules[434].opcodes[36] = { type: 7, string: [101] };// TLS
      this.rules[434].opcodes[37] = { type: 7, string: [102] };// TLS
    
      /* pct-encoded-no-DQUOTE */
      this.rules[435].opcodes = [];
      this.rules[435].opcodes[0] = { type: 1, children: [1,15] };// ALT
      this.rules[435].opcodes[1] = { type: 2, children: [2,3,14] };// CAT
      this.rules[435].opcodes[2] = { type: 7, string: [37] };// TLS
      this.rules[435].opcodes[3] = { type: 1, children: [4,5,6,7,8,9,10,11,12,13] };// ALT
      this.rules[435].opcodes[4] = { type: 7, string: [48] };// TLS
      this.rules[435].opcodes[5] = { type: 7, string: [49] };// TLS
      this.rules[435].opcodes[6] = { type: 7, string: [51] };// TLS
      this.rules[435].opcodes[7] = { type: 7, string: [52] };// TLS
      this.rules[435].opcodes[8] = { type: 7, string: [53] };// TLS
      this.rules[435].opcodes[9] = { type: 7, string: [54] };// TLS
      this.rules[435].opcodes[10] = { type: 7, string: [55] };// TLS
      this.rules[435].opcodes[11] = { type: 7, string: [56] };// TLS
      this.rules[435].opcodes[12] = { type: 7, string: [57] };// TLS
      this.rules[435].opcodes[13] = { type: 4, index: 441 };// RNM(A-to-F)
      this.rules[435].opcodes[14] = { type: 4, index: 440 };// RNM(HEXDIG)
      this.rules[435].opcodes[15] = { type: 2, children: [16,17,18] };// CAT
      this.rules[435].opcodes[16] = { type: 7, string: [37] };// TLS
      this.rules[435].opcodes[17] = { type: 7, string: [50] };// TLS
      this.rules[435].opcodes[18] = { type: 1, children: [19,20,21,22,23,24,25,26,27,28] };// ALT
      this.rules[435].opcodes[19] = { type: 7, string: [48] };// TLS
      this.rules[435].opcodes[20] = { type: 7, string: [49] };// TLS
      this.rules[435].opcodes[21] = { type: 7, string: [51] };// TLS
      this.rules[435].opcodes[22] = { type: 7, string: [52] };// TLS
      this.rules[435].opcodes[23] = { type: 7, string: [53] };// TLS
      this.rules[435].opcodes[24] = { type: 7, string: [54] };// TLS
      this.rules[435].opcodes[25] = { type: 7, string: [55] };// TLS
      this.rules[435].opcodes[26] = { type: 7, string: [56] };// TLS
      this.rules[435].opcodes[27] = { type: 7, string: [57] };// TLS
      this.rules[435].opcodes[28] = { type: 4, index: 441 };// RNM(A-to-F)
    
      /* IRI-in-header */
      this.rules[436].opcodes = [];
      this.rules[436].opcodes[0] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[436].opcodes[1] = { type: 1, children: [2,3] };// ALT
      this.rules[436].opcodes[2] = { type: 4, index: 445 };// RNM(VCHAR)
      this.rules[436].opcodes[3] = { type: 4, index: 382 };// RNM(obs-text)
    
      /* IRI-in-query */
      this.rules[437].opcodes = [];
      this.rules[437].opcodes[0] = { type: 3, min: 1, max: Infinity };// REP
      this.rules[437].opcodes[1] = { type: 4, index: 428 };// RNM(qchar-no-AMP)
    
      /* ALPHA */
      this.rules[438].opcodes = [];
      this.rules[438].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[438].opcodes[1] = { type: 5, min: 65, max: 90 };// TRG
      this.rules[438].opcodes[2] = { type: 5, min: 97, max: 122 };// TRG
    
      /* DIGIT */
      this.rules[439].opcodes = [];
      this.rules[439].opcodes[0] = { type: 5, min: 48, max: 57 };// TRG
    
      /* HEXDIG */
      this.rules[440].opcodes = [];
      this.rules[440].opcodes[0] = { type: 1, children: [1,2] };// ALT
      this.rules[440].opcodes[1] = { type: 4, index: 439 };// RNM(DIGIT)
      this.rules[440].opcodes[2] = { type: 4, index: 441 };// RNM(A-to-F)
    
      /* A-to-F */
      this.rules[441].opcodes = [];
      this.rules[441].opcodes[0] = { type: 1, children: [1,2,3,4,5,6] };// ALT
      this.rules[441].opcodes[1] = { type: 7, string: [97] };// TLS
      this.rules[441].opcodes[2] = { type: 7, string: [98] };// TLS
      this.rules[441].opcodes[3] = { type: 7, string: [99] };// TLS
      this.rules[441].opcodes[4] = { type: 7, string: [100] };// TLS
      this.rules[441].opcodes[5] = { type: 7, string: [101] };// TLS
      this.rules[441].opcodes[6] = { type: 7, string: [102] };// TLS
    
      /* DQUOTE */
      this.rules[442].opcodes = [];
      this.rules[442].opcodes[0] = { type: 6, string: [34] };// TBS
    
      /* SP */
      this.rules[443].opcodes = [];
      this.rules[443].opcodes[0] = { type: 6, string: [32] };// TBS
    
      /* HTAB */
      this.rules[444].opcodes = [];
      this.rules[444].opcodes[0] = { type: 6, string: [9] };// TBS
    
      /* VCHAR */
      this.rules[445].opcodes = [];
      this.rules[445].opcodes[0] = { type: 5, min: 33, max: 126 };// TRG
  • §

    The toString() function will display the original grammar file(s) that produced these opcodes.

      this.toString = function toString(){
        let str = "";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; OData ABNF Construction Rules Version 4.01 and 4.0\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 17 September 2020\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += ";\r\n";
        str += "; Technical Committee:\r\n";
        str += ";   OASIS Open Data Protocol (OData) TC\r\n";
        str += ";   https://www.oasis-open.org/committees/odata\r\n";
        str += ";\r\n";
        str += "; Chairs:\r\n";
        str += ";   - Ralf Handl (ralf.handl@sap.com), SAP SE\r\n";
        str += ";   - Michael Pizzo (mikep@microsoft.com), Microsoft\r\n";
        str += ";\r\n";
        str += "; Editors:\r\n";
        str += ";   - Ralf Handl (ralf.handl@sap.com), SAP SE\r\n";
        str += ";   - Michael Pizzo (mikep@microsoft.com), Microsoft\r\n";
        str += ";   - Martin Zurmuehl (martin.zurmuehl@sap.com), SAP SE\r\n";
        str += ";\r\n";
        str += "; Additional artifacts: \r\n";
        str += ";   This grammar is one component of a Work Product which consists of:\r\n";
        str += ";   - OData Version 4.01 Part 1: Protocol\r\n";
        str += ";   - OData Version 4.01 Part 2: URL Conventions\r\n";
        str += ";   - OData ABNF Construction Rules Version 4.01 (this document)\r\n";
        str += ";   - OData ABNF Test Cases Version 4.01\r\n";
        str += ";\r\n";
        str += "; Related work:\r\n";
        str += ";   This specification replaces or supersedes:\r\n";
        str += ";   - OData ABNF Construction Rules Version 4.0\r\n";
        str += ";   This work product is related to\r\n";
        str += ";   - OData Common Schema Definition Language (CSDL) JSON Representation Version 4.01\r\n";
        str += ";   - OData Common Schema Definition Language (CSDL) XML Representation Version 4.01\r\n";
        str += ";   - OData JSON Format Version 4.01\r\n";
        str += ";\r\n";
        str += "; Abstract:\r\n";
        str += ";   The Open Data Protocol (OData) enables the creation of REST-based data\r\n";
        str += ";   services, which allow resources, identified using Uniform Resource\r\n";
        str += ";   Identifiers (URLs) and defined in a data model, to be published and \r\n";
        str += ";   edited by Web clients using simple HTTP messages. This document defines\r\n";
        str += ";   the URL syntax for requests and the serialization format for primitive \r\n";
        str += ";   literals in request and response payloads.\r\n";
        str += ";\r\n";
        str += "; Overview:\r\n";
        str += ";   This grammar uses the ABNF defined in RFC5234 and RFC7405. \r\n";
        str += ";\r\n";
        str += ";   The following rules assume that URIs have been percent-encoding normalized\r\n";
        str += ";   as described in section 6.2.2.2 of RFC3986 \r\n";
        str += ";   (http://tools.ietf.org/html/rfc3986#section-6.2.2.2)\r\n";
        str += ";   before applying the grammar to them, i.e. all characters in the unreserved \r\n";
        str += ";   set (see rule \"unreserved\" below) are plain literals and NOT\r\n";
        str += ";   percent-encoded. \r\n";
        str += ";\r\n";
        str += ";   For characters outside the unreserved set the rules explicitly state \r\n";
        str += ";   whether the percent-encoded representation is treated identical to the\r\n";
        str += ";   plain literal representation.\r\n";
        str += "; \r\n";
        str += ";   One prominent example is the single quote that delimits OData primitive  \r\n";
        str += ";   type literals: %27 and ' are treated identically, so a single quote within \r\n";
        str += ";   a string literal is \"encoded\" as two consecutive single quotes in either\r\n";
        str += ";   literal or percent-encoded representation.\r\n";
        str += ";\r\n";
        str += "; Contents:\r\n";
        str += ";   1. Resource Path\r\n";
        str += ";   2. Query Options\r\n";
        str += ";   3. Context URL Fragments\r\n";
        str += ";   4. Expressions\r\n";
        str += ";   5. JSON format for function parameters\r\n";
        str += ";   6. Names and identifiers\r\n";
        str += ";   7. Literal Data Values\r\n";
        str += ";   8. Header values\r\n";
        str += ";   9. Punctuation\r\n";
        str += ";\r\n";
        str += ";   A. URI syntax [RFC3986]\r\n";
        str += ";   B. IRI syntax [RFC3986]\r\n";
        str += ";   C. ABNF core definitions [RFC5234]\r\n";
        str += ";\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "dummyStartRule = odataUri / header / primitiveValue ; just to please the test parser\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "\r\n";
        str += "odataUri = serviceRoot [ odataRelativeUri ]  \r\n";
        str += "\r\n";
        str += "serviceRoot = ( \"https\" / \"http\" )                    ; Note: case-insensitive \r\n";
        str += "              \"://\" host [ \":\" port ]\r\n";
        str += "              \"/\" *( segment-nz \"/\" )\r\n";
        str += "\r\n";
        str += "; Note: dollar-prefixed path segments are case-sensitive!\r\n";
        str += "odataRelativeUri = %s\"$batch\"  [ \"?\" batchOptions ]\r\n";
        str += "                 / %s\"$entity\" \"?\" entityOptions  \r\n";
        str += "                 / %s\"$entity\" \"/\" optionallyQualifiedEntityTypeName \"?\" entityCastOptions  \r\n";
        str += "                 / %s\"$metadata\" [ \"?\" metadataOptions ] [ context ]\r\n";
        str += "                 / resourcePath [ \"?\" queryOptions ]\r\n";
        str += "\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 1. Resource Path\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "resourcePath = entitySetName                  [ collectionNavigation ] \r\n";
        str += "             / singletonEntity                [ singleNavigation ]\r\n";
        str += "             / actionImportCall \r\n";
        str += "             / entityColFunctionImportCall    [ collectionNavigation ] \r\n";
        str += "             / entityFunctionImportCall       [ singleNavigation ] \r\n";
        str += "             / complexColFunctionImportCall   [ complexColPath ] \r\n";
        str += "             / complexFunctionImportCall      [ complexPath ] \r\n";
        str += "             / primitiveColFunctionImportCall [ collectionPath ] \r\n";
        str += "             / primitiveFunctionImportCall    [ primitivePath ] \r\n";
        str += "             / functionImportCallNoParens     [ querySegment ]\r\n";
        str += "             / crossjoin                      [ querySegment ]\r\n";
        str += "             / %s\"$all\"                         [ \"/\" optionallyQualifiedEntityTypeName ]\r\n";
        str += "\r\n";
        str += "collectionNavigation = collectionNavPath\r\n";
        str += "                     / \"/\" optionallyQualifiedEntityTypeName [ collectionNavPath ]\r\n";
        str += "\r\n";
        str += "collectionNavPath    = keyPredicate [ singleNavigation ]\r\n";
        str += "                     / filterInPath [ collectionNavigation ]\r\n";
        str += "                     / each [ boundOperation ]\r\n";
        str += "                     / boundOperation\r\n";
        str += "                     / count\r\n";
        str += "                     / ref\r\n";
        str += "                     / querySegment\r\n";
        str += "\r\n";
        str += "keyPredicate     = simpleKey / compoundKey / keyPathSegments\r\n";
        str += "simpleKey        = OPEN ( parameterAlias / keyPropertyValue ) CLOSE\r\n";
        str += "compoundKey      = OPEN keyValuePair *( COMMA keyValuePair ) CLOSE\r\n";
        str += "keyValuePair     = ( primitiveKeyProperty / keyPropertyAlias  ) EQ ( parameterAlias / keyPropertyValue )\r\n";
        str += "keyPropertyValue = primitiveLiteral\r\n";
        str += "keyPropertyAlias = odataIdentifier\r\n";
        str += "keyPathSegments  = 1*( \"/\" keyPathLiteral )\r\n";
        str += "keyPathLiteral   = *pchar\r\n";
        str += "\r\n";
        str += "singleNavigation = singleNavPath\r\n";
        str += "                 / \"/\" optionallyQualifiedEntityTypeName [ singleNavPath ]\r\n";
        str += "\r\n";
        str += "singleNavPath = \"/\" propertyPath\r\n";
        str += "              / boundOperation\r\n";
        str += "              / ref \r\n";
        str += "              / value  ; request the media resource of a media entity \r\n";
        str += "              / querySegment\r\n";
        str += "\r\n";
        str += "propertyPath = entityColNavigationProperty [ collectionNavigation ]\r\n";
        str += "             / entityNavigationProperty    [ singleNavigation ]\r\n";
        str += "             / complexColProperty          [ complexColPath ]\r\n";
        str += "             / complexProperty             [ complexPath ]\r\n";
        str += "             / primitiveColProperty        [ collectionPath ]\r\n";
        str += "             / primitiveProperty           [ primitivePath ]\r\n";
        str += "             / streamProperty              [ boundOperation ]\r\n";
        str += "\r\n";
        str += "collectionPath = count / boundOperation / ordinalIndex / querySegment\r\n";
        str += "\r\n";
        str += "primitivePath  = value / boundOperation / querySegment\r\n";
        str += "\r\n";
        str += "complexColPath = collectionPath \r\n";
        str += "               / \"/\" optionallyQualifiedComplexTypeName [ collectionPath ]\r\n";
        str += "\r\n";
        str += "complexPath = complexNavPath \r\n";
        str += "            / \"/\" optionallyQualifiedComplexTypeName [ complexNavPath ]\r\n";
        str += "\r\n";
        str += "complexNavPath = \"/\" propertyPath \r\n";
        str += "               / boundOperation\r\n";
        str += "               / querySegment\r\n";
        str += "                 \r\n";
        str += "filterInPath = %s\"/$filter\" OPEN boolCommonExpr CLOSE\r\n";
        str += "\r\n";
        str += "each  = %s\"/$each\"\r\n";
        str += "count = %s\"/$count\"\r\n";
        str += "ref   = %s\"/$ref\"\r\n";
        str += "value = %s\"/$value\"\r\n";
        str += "\r\n";
        str += "querySegment = %s\"/$query\"\r\n";
        str += "\r\n";
        str += "ordinalIndex = \"/\" [ \"-\" ] 1*DIGIT\r\n";
        str += "\r\n";
        str += "; boundOperation segments can only be composed if the type of the previous segment \r\n";
        str += "; matches the type of the first parameter of the action or function being called.\r\n";
        str += "; Note that the rule name reflects the return type of the function.\r\n";
        str += "boundOperation = \"/\" ( boundActionCall\r\n";
        str += "                     / boundEntityColFunctionCall    [ collectionNavigation ] \r\n";
        str += "                     / boundEntityFunctionCall       [ singleNavigation ]\r\n";
        str += "                     / boundComplexColFunctionCall   [ complexColPath ] \r\n";
        str += "                     / boundComplexFunctionCall      [ complexPath ]\r\n";
        str += "                     / boundPrimitiveColFunctionCall [ collectionPath ] \r\n";
        str += "                     / boundPrimitiveFunctionCall    [ primitivePath ] \r\n";
        str += "                     / boundFunctionCallNoParens     [ querySegment ]\r\n";
        str += "                     )\r\n";
        str += "\r\n";
        str += "actionImportCall = actionImport\r\n";
        str += "boundActionCall  = [ namespace \".\" ] action\r\n";
        str += "                   ; with the added restriction that the binding parameter MUST be either an entity or collection of entities\r\n";
        str += "                   ; and is specified by reference using the URI immediately preceding (to the left) of the boundActionCall\r\n";
        str += "\r\n";
        str += "; The following boundXxxFunctionCall rules have the added restrictions that\r\n";
        str += ";  - the function MUST support binding, and \r\n";
        str += ";  - the binding parameter type MUST match the type of resource identified by the \r\n";
        str += ";    URI immediately preceding (to the left) of the boundXxxFunctionCall, and\r\n";
        str += ";  - the functionParameters MUST NOT include the bindingParameter.\r\n";
        str += "boundEntityFunctionCall       = [ namespace \".\" ] entityFunction       functionParameters\r\n";
        str += "boundEntityColFunctionCall    = [ namespace \".\" ] entityColFunction    functionParameters\r\n";
        str += "boundComplexFunctionCall      = [ namespace \".\" ] complexFunction      functionParameters\r\n";
        str += "boundComplexColFunctionCall   = [ namespace \".\" ] complexColFunction   functionParameters\r\n";
        str += "boundPrimitiveFunctionCall    = [ namespace \".\" ] primitiveFunction    functionParameters\r\n";
        str += "boundPrimitiveColFunctionCall = [ namespace \".\" ] primitiveColFunction functionParameters\r\n";
        str += "\r\n";
        str += "boundFunctionCallNoParens     = [ namespace \".\" ] entityFunction\r\n";
        str += "                              / [ namespace \".\" ] entityColFunction\r\n";
        str += "                              / [ namespace \".\" ] complexFunction\r\n";
        str += "                              / [ namespace \".\" ] complexColFunction\r\n";
        str += "                              / [ namespace \".\" ] primitiveFunction\r\n";
        str += "                              / [ namespace \".\" ] primitiveColFunction\r\n";
        str += "\r\n";
        str += "entityFunctionImportCall       = entityFunctionImport       functionParameters\r\n";
        str += "entityColFunctionImportCall    = entityColFunctionImport    functionParameters\r\n";
        str += "complexFunctionImportCall      = complexFunctionImport      functionParameters\r\n";
        str += "complexColFunctionImportCall   = complexColFunctionImport   functionParameters\r\n";
        str += "primitiveFunctionImportCall    = primitiveFunctionImport    functionParameters\r\n";
        str += "primitiveColFunctionImportCall = primitiveColFunctionImport functionParameters\r\n";
        str += "\r\n";
        str += "functionImportCallNoParens     = entityFunctionImport\r\n";
        str += "                               / entityColFunctionImport\r\n";
        str += "                               / complexFunctionImport\r\n";
        str += "                               / complexColFunctionImport\r\n";
        str += "                               / primitiveFunctionImport\r\n";
        str += "                               / primitiveColFunctionImport\r\n";
        str += "\r\n";
        str += "functionParameters = OPEN [ functionParameter *( COMMA functionParameter ) ] CLOSE\r\n";
        str += "functionParameter  = parameterName EQ ( parameterAlias / primitiveLiteral )\r\n";
        str += "parameterName      = odataIdentifier\r\n";
        str += "parameterAlias     = AT odataIdentifier \r\n";
        str += "\r\n";
        str += "crossjoin = %s\"$crossjoin\" OPEN\r\n";
        str += "            entitySetName *( COMMA entitySetName )\r\n";
        str += "            CLOSE\r\n";
        str += "\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 2. Query Options\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "queryOptions = queryOption *( \"&\" queryOption )        \r\n";
        str += "queryOption  = systemQueryOption  \r\n";
        str += "             / aliasAndValue \r\n";
        str += "             / nameAndValue\r\n";
        str += "             / customQueryOption  \r\n";
        str += "\r\n";
        str += "batchOptions = batchOption *( \"&\" batchOption )   \r\n";
        str += "batchOption  = format\r\n";
        str += "             / customQueryOption   \r\n";
        str += "             \r\n";
        str += "metadataOptions = metadataOption *( \"&\" metadataOption )   \r\n";
        str += "metadataOption  = format\r\n";
        str += "                / customQueryOption   \r\n";
        str += "\r\n";
        str += "entityOptions  = *( entityIdOption \"&\" ) id *( \"&\" entityIdOption )\r\n";
        str += "entityIdOption = format\r\n";
        str += "               / customQueryOption\r\n";
        str += "entityCastOptions = *( entityCastOption \"&\" ) id *( \"&\" entityCastOption )\r\n";
        str += "entityCastOption  = entityIdOption\r\n";
        str += "                  / expand \r\n";
        str += "                  / select\r\n";
        str += "\r\n";
        str += "id = ( \"$id\" / \"id\" ) EQ IRI-in-query       \r\n";
        str += "\r\n";
        str += "systemQueryOption = compute\r\n";
        str += "                  / deltatoken\r\n";
        str += "                  / expand \r\n";
        str += "                  / filter \r\n";
        str += "                  / format \r\n";
        str += "                  / id\r\n";
        str += "                  / inlinecount \r\n";
        str += "                  / orderby \r\n";
        str += "                  / schemaversion\r\n";
        str += "                  / search\r\n";
        str += "                  / select \r\n";
        str += "                  / skip \r\n";
        str += "                  / skiptoken\r\n";
        str += "                  / top \r\n";
        str += "                  / index\r\n";
        str += "\r\n";
        str += "compute          = ( \"$compute\" / \"compute\" ) EQ computeItem *( COMMA computeItem )\r\n";
        str += "computeItem      = commonExpr RWS \"as\" RWS computedProperty\r\n";
        str += "computedProperty = odataIdentifier         \r\n";
        str += "\r\n";
        str += "expand            = ( \"$expand\" / \"expand\" ) EQ expandItem *( COMMA expandItem )\r\n";
        str += "expandItem        = \"$value\"\r\n";
        str += "                  / expandPath\r\n";
        str += "                  / optionallyQualifiedEntityTypeName \"/\" expandPath\r\n";
        str += "expandPath        = *( ( complexProperty / complexColProperty / optionallyQualifiedComplexTypeName / complexAnnotationInQuery ) \"/\" )\r\n";
        str += "                    ( STAR [ ref / OPEN levels CLOSE ]\r\n";
        str += "                    / streamProperty \r\n";
        str += "                    / ( navigationProperty / entityAnnotationInQuery ) [ \"/\" optionallyQualifiedEntityTypeName ] \r\n";
        str += "                      [ ref   [ OPEN expandRefOption   *( SEMI expandRefOption   ) CLOSE ]\r\n";
        str += "                      / count [ OPEN expandCountOption *( SEMI expandCountOption ) CLOSE ]\r\n";
        str += "                      /         OPEN expandOption      *( SEMI expandOption      ) CLOSE \r\n";
        str += "                      ]                    \r\n";
        str += "                    )\r\n";
        str += "expandCountOption = filter\r\n";
        str += "                  / search\r\n";
        str += "expandRefOption   = expandCountOption\r\n";
        str += "                  / orderby\r\n";
        str += "                  / skip \r\n";
        str += "                  / top \r\n";
        str += "                  / inlinecount\r\n";
        str += "expandOption      = expandRefOption\r\n";
        str += "                  / select \r\n";
        str += "                  / expand\r\n";
        str += "                  / compute\r\n";
        str += "                  / levels\r\n";
        str += "                  / aliasAndValue\r\n";
        str += "                \r\n";
        str += "levels = ( \"$levels\" / \"levels\" ) EQ ( oneToNine *DIGIT / \"max\" )\r\n";
        str += "\r\n";
        str += "filter = ( \"$filter\" / \"filter\" ) EQ boolCommonExpr\r\n";
        str += "\r\n";
        str += "orderby     = ( \"$orderby\" / \"orderby\" ) EQ orderbyItem *( COMMA orderbyItem )\r\n";
        str += "orderbyItem = commonExpr [ RWS ( \"asc\" / \"desc\" ) ]\r\n";
        str += "\r\n";
        str += "skip = ( \"$skip\" / \"skip\" ) EQ 1*DIGIT\r\n";
        str += "top  = ( \"$top\"  / \"top\"  ) EQ 1*DIGIT\r\n";
        str += "\r\n";
        str += "index  = ( \"$index\" / \"index\" ) EQ [ \"-\" ] 1*DIGIT\r\n";
        str += "\r\n";
        str += "format = ( \"$format\" / \"format\" ) EQ\r\n";
        str += "         ( \"atom\"\r\n";
        str += "         / \"json\" \r\n";
        str += "         / \"xml\"\r\n";
        str += "         / 1*pchar \"/\" 1*pchar ; <a data service specific value indicating a\r\n";
        str += "         )                     ; format specific to the specific data service> or\r\n";
        str += "                               ; <An IANA-defined [IANA-MMT] content type>\r\n";
        str += "                          \r\n";
        str += "inlinecount = ( \"$count\" / \"count\" ) EQ booleanValue\r\n";
        str += "\r\n";
        str += "schemaversion   = ( \"$schemaversion\" / \"schemaversion\" ) EQ ( STAR / 1*unreserved )\r\n";
        str += "\r\n";
        str += "search     = ( \"$search\" / \"search\" ) EQ BWS ( searchExpr / searchExpr-incomplete )\r\n";
        str += "\r\n";
        str += "searchExpr = ( searchParenExpr\r\n";
        str += "             / searchNegateExpr\r\n";
        str += "             / searchPhrase\r\n";
        str += "             / searchWord \r\n";
        str += "             ) [ searchOrExpr\r\n";
        str += "               / searchAndExpr\r\n";
        str += "               ]\r\n";
        str += "searchParenExpr = OPEN BWS searchExpr BWS CLOSE\r\n";
        str += "\r\n";
        str += "; NOT is a unary operator if followed by a search expression\r\n";
        str += "searchNegateExpr = %s\"NOT\" RWS searchExpr\r\n";
        str += "\r\n";
        str += "; AND and OR are binary operators if they appear between search expressions\r\n";
        str += "searchOrExpr  = RWS %s\"OR\"  RWS searchExpr\r\n";
        str += "searchAndExpr = RWS [ %s\"AND\" RWS ] searchExpr\r\n";
        str += "\r\n";
        str += "searchPhrase = quotation-mark 1*( qchar-no-AMP-DQUOTE / SP ) quotation-mark\r\n";
        str += "\r\n";
        str += "; A searchWord is a sequence of one or more non-whitespace characters, excluding \r\n";
        str += "; - literal or percent-encoded parentheses \"(\", \"%28\", \"%29\", \")\"\r\n";
        str += "; - literal or percent-encoded double-quotes '\"' and \"%22\"\r\n";
        str += "; - the semicolon \";\"\r\n";
        str += "; Percent-encoding is allowed, and required for characters with special meaning in the query part of a URL, especially \"&\" and \"#\".\r\n";
        str += "; Expressing this in ABNF is somewhat clumsy, so the following rule is overly generous.\r\n";
        str += "; Note: the words AND, OR, and NOT are sometimes operators, depending on their position within a search expression.\r\n";
        str += "searchWord = searchChar *( searchChar / SQUOTE )\r\n";
        str += "searchChar = unreserved / pct-encoded-no-DQUOTE / \"!\" / \"*\" / \"+\" / \",\" / \":\" / \"@\" / \"/\" / \"?\" / \"$\" / \"=\"\r\n";
        str += "\r\n";
        str += "searchExpr-incomplete = SQUOTE *( SQUOTE-in-string / qchar-no-AMP-SQUOTE / quotation-mark / SP ) SQUOTE\r\n";
        str += "\r\n";
        str += "\r\n";
        str += "select         = ( \"$select\" / \"select\" ) EQ selectItem *( COMMA selectItem )\r\n";
        str += "selectItem     = STAR\r\n";
        str += "               / allOperationsInSchema \r\n";
        str += "               / selectProperty\r\n";
        str += "               / optionallyQualifiedActionName  \r\n";
        str += "               / optionallyQualifiedFunctionName  \r\n";
        str += "               / ( optionallyQualifiedEntityTypeName / optionallyQualifiedComplexTypeName ) \r\n";
        str += "                 \"/\" ( selectProperty\r\n";
        str += "                     / optionallyQualifiedActionName   \r\n";
        str += "                     / optionallyQualifiedFunctionName  \r\n";
        str += "                     )\r\n";
        str += "selectProperty = primitiveProperty / primitiveAnnotationInQuery\r\n";
        str += "               / ( primitiveColProperty / primitiveColAnnotationInQuery ) [ OPEN selectOptionPC *( SEMI selectOptionPC ) CLOSE ]\r\n";
        str += "               / navigationProperty\r\n";
        str += "               / selectPath [ OPEN selectOption *( SEMI selectOption ) CLOSE\r\n";
        str += "                            / \"/\" selectProperty \r\n";
        str += "                            ]\r\n";
        str += "selectPath     = ( complexProperty / complexColProperty / complexAnnotationInQuery ) [ \"/\" optionallyQualifiedComplexTypeName ] \r\n";
        str += "selectOptionPC = filter / search / inlinecount / orderby / skip / top \r\n";
        str += "selectOption   = selectOptionPC\r\n";
        str += "               / compute / select / aliasAndValue\r\n";
        str += "\r\n";
        str += "allOperationsInSchema = namespace \".\" STAR                 \r\n";
        str += "\r\n";
        str += "; The parameterNames uniquely identify the bound function overload\r\n";
        str += "; Necessary only if it has overloads\r\n";
        str += "optionallyQualifiedActionName   = [ namespace \".\" ] action\r\n";
        str += "optionallyQualifiedFunctionName = [ namespace \".\" ] function [ OPEN parameterNames CLOSE ]\r\n";
        str += "\r\n";
        str += "; The names of all non-binding parameters, separated by commas \r\n";
        str += "parameterNames = parameterName *( COMMA parameterName )\r\n";
        str += "\r\n";
        str += "deltatoken = \"$deltatoken\" EQ 1*( qchar-no-AMP )\r\n";
        str += "\r\n";
        str += "skiptoken = \"$skiptoken\" EQ 1*( qchar-no-AMP )\r\n";
        str += "\r\n";
        str += "aliasAndValue = parameterAlias EQ parameterValue\r\n";
        str += "\r\n";
        str += "nameAndValue = parameterName EQ parameterValue\r\n";
        str += "\r\n";
        str += "parameterValue = arrayOrObject\r\n";
        str += "               / commonExpr\r\n";
        str += "\r\n";
        str += "customQueryOption = customName [ EQ customValue ]\r\n";
        str += "customName        = qchar-no-AMP-EQ-AT-DOLLAR *( qchar-no-AMP-EQ ) \r\n";
        str += "customValue       = *( qchar-no-AMP )\r\n";
        str += "\r\n";
        str += "complexAnnotationInQuery = annotationInQuery ; complex-valued annotation\r\n";
        str += "entityAnnotationInQuery  = annotationInQuery ; entity-valued annotation\r\n";
        str += "\r\n";
        str += "primitiveAnnotationInQuery    = annotationInQuery ; primitive-valued annotation\r\n";
        str += "primitiveColAnnotationInQuery = annotationInQuery ; primitive collection-valued annotation\r\n";
        str += "     \r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 3. Context URL Fragments\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "context         = \"#\" contextFragment\r\n";
        str += "contextFragment = %s\"Collection($ref)\"\r\n";
        str += "                / %s\"$ref\"\r\n";
        str += "                / %s\"Collection(Edm.EntityType)\"\r\n";
        str += "                / %s\"Collection(Edm.ComplexType)\"\r\n";
        str += "                / singletonEntity [ navigation *( containmentNavigation ) [ \"/\" qualifiedEntityTypeName ] ] [ selectList ]\r\n";
        str += "                / qualifiedTypeName [ selectList ]\r\n";
        str += "                / entitySet ( %s\"/$deletedEntity\" / %s\"/$link\" / %s\"/$deletedLink\" )\r\n";
        str += "                / entitySet keyPredicate \"/\" contextPropertyPath [ selectList ]\r\n";
        str += "                / entitySet [ selectList ] [ %s\"/$entity\" / %s\"/$delta\" ]\r\n";
        str += "\r\n";
        str += "entitySet = entitySetName *( containmentNavigation ) [ \"/\" qualifiedEntityTypeName ]\r\n";
        str += "            \r\n";
        str += "containmentNavigation = keyPredicate [ \"/\" qualifiedEntityTypeName ] navigation\r\n";
        str += "navigation            = *( \"/\" complexProperty [ \"/\" qualifiedComplexTypeName ] ) \"/\" navigationProperty   \r\n";
        str += "\r\n";
        str += "selectList         = OPEN [ selectListItem *( COMMA selectListItem ) ] CLOSE\r\n";
        str += "selectListItem     = STAR ; all structural properties\r\n";
        str += "                   / allOperationsInSchema \r\n";
        str += "                   / [ ( qualifiedEntityTypeName / qualifiedComplexTypeName ) \"/\" ] \r\n";
        str += "                     ( qualifiedActionName\r\n";
        str += "                     / qualifiedFunctionName \r\n";
        str += "                     / selectListProperty\r\n";
        str += "                     )\r\n";
        str += "selectListProperty = primitiveProperty  \r\n";
        str += "                   / primitiveColProperty \r\n";
        str += "                   / ( navigationProperty / entityAnnotationInFragment ) [ \"+\" ] [ selectList ]\r\n";
        str += "                   / ( complexProperty / complexColProperty / complexAnnotationInFragment ) [ \"/\" qualifiedComplexTypeName ] [ \"/\" selectListProperty ]\r\n";
        str += "\r\n";
        str += "contextPropertyPath = primitiveProperty\r\n";
        str += "                    / primitiveColProperty\r\n";
        str += "                    / complexColProperty\r\n";
        str += "                    / complexProperty [ [ \"/\" qualifiedComplexTypeName ] \"/\" contextPropertyPath ]\r\n";
        str += "\r\n";
        str += "qualifiedActionName   = namespace \".\" action\r\n";
        str += "qualifiedFunctionName = namespace \".\" function [ OPEN parameterNames CLOSE ]\r\n";
        str += "                \r\n";
        str += "complexAnnotationInFragment = annotationInFragment ; complex-valued annotation\r\n";
        str += "entityAnnotationInFragment  = annotationInFragment ; entity-valued annotation\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 4. Expressions\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "; Note: a boolCommonExpr is also a commonExpr, e.g. sort by Boolean \r\n";
        str += "commonExpr = ( primitiveLiteral\r\n";
        str += "             / arrayOrObject\r\n";
        str += "             / rootExpr\r\n";
        str += "             / firstMemberExpr\r\n";
        str += "             / functionExpr\r\n";
        str += "             / negateExpr \r\n";
        str += "             / methodCallExpr \r\n";
        str += "             / parenExpr \r\n";
        str += "             / castExpr \r\n";
        str += "             / isofExpr\r\n";
        str += "             / notExpr\r\n";
        str += "             ) \r\n";
        str += "             [ addExpr \r\n";
        str += "             / subExpr \r\n";
        str += "             / mulExpr \r\n";
        str += "             / divExpr\r\n";
        str += "             / divbyExpr \r\n";
        str += "             / modExpr\r\n";
        str += "             ]  \r\n";
        str += "             [ eqExpr \r\n";
        str += "             / neExpr \r\n";
        str += "             / ltExpr  \r\n";
        str += "             / leExpr  \r\n";
        str += "             / gtExpr \r\n";
        str += "             / geExpr \r\n";
        str += "             / hasExpr \r\n";
        str += "             / inExpr \r\n";
        str += "             ]\r\n";
        str += "             [ andExpr \r\n";
        str += "             / orExpr \r\n";
        str += "             ] \r\n";
        str += "\r\n";
        str += "boolCommonExpr = commonExpr ; resulting in a Boolean\r\n";
        str += "\r\n";
        str += "rootExpr = %s\"$root/\" ( entitySetName keyPredicate / singletonEntity ) [ singleNavigationExpr ]\r\n";
        str += "\r\n";
        str += "firstMemberExpr = memberExpr\r\n";
        str += "                / inscopeVariableExpr [ \"/\" memberExpr ]\r\n";
        str += "\r\n";
        str += "memberExpr = directMemberExpr\r\n";
        str += "           / ( optionallyQualifiedEntityTypeName / optionallyQualifiedComplexTypeName ) \"/\" directMemberExpr\r\n";
        str += "             \r\n";
        str += "directMemberExpr = propertyPathExpr\r\n";
        str += "                 / boundFunctionExpr \r\n";
        str += "                 / annotationExpr\r\n";
        str += "             \r\n";
        str += "propertyPathExpr = ( entityColNavigationProperty [ collectionNavigationExpr ] \r\n";
        str += "                   / entityNavigationProperty    [ singleNavigationExpr ] \r\n";
        str += "                   / complexColProperty          [ complexColPathExpr ]\r\n";
        str += "                   / complexProperty             [ complexPathExpr ] \r\n";
        str += "                   / primitiveColProperty        [ collectionPathExpr ]\r\n";
        str += "                   / primitiveProperty           [ primitivePathExpr ]\r\n";
        str += "                   / streamProperty              [ primitivePathExpr ]\r\n";
        str += "                   )\r\n";
        str += "                   \r\n";
        str += "annotationExpr = annotationInQuery\r\n";
        str += "                 [ collectionPathExpr\r\n";
        str += "                 / singleNavigationExpr\r\n";
        str += "                 / complexPathExpr\r\n";
        str += "                 / primitivePathExpr\r\n";
        str += "                 ]\r\n";
        str += "                 \r\n";
        str += "annotationInQuery    = AT [ namespace \".\" ] termName [ HASH annotationQualifier ]\r\n";
        str += "annotationInFragment = AT [ namespace \".\" ] termName [ \"#\"  annotationQualifier ]\r\n";
        str += "annotationQualifier  = odataIdentifier                \r\n";
        str += "                   \r\n";
        str += "inscopeVariableExpr  = implicitVariableExpr \r\n";
        str += "                     / parameterAlias\r\n";
        str += "                     / lambdaVariableExpr ; only allowed inside a lambdaPredicateExpr\r\n";
        str += "implicitVariableExpr = %s\"$it\"              ; the current instance of the resource identified by the resource path\r\n";
        str += "                     / %s\"$this\"            ; the instance on which the query option is evaluated\r\n";
        str += "lambdaVariableExpr   = odataIdentifier\r\n";
        str += "\r\n";
        str += "collectionNavigationExpr = [ \"/\" optionallyQualifiedEntityTypeName ]\r\n";
        str += "                           ( collectionPathExpr\r\n";
        str += "                           / keyPredicate [ singleNavigationExpr ] \r\n";
        str += "                           / filterExpr [ collectionNavigationExpr ]\r\n";
        str += "                           )\r\n";
        str += "\r\n";
        str += "singleNavigationExpr = \"/\" memberExpr\r\n";
        str += "\r\n";
        str += "filterExpr = %s\"/$filter\" OPEN boolCommonExpr CLOSE\r\n";
        str += "\r\n";
        str += "complexColPathExpr = collectionPathExpr\r\n";
        str += "                   / \"/\" optionallyQualifiedComplexTypeName [ collectionPathExpr ]\r\n";
        str += " \r\n";
        str += "collectionPathExpr = count [ OPEN expandCountOption *( SEMI expandCountOption ) CLOSE ]\r\n";
        str += "                   / filterExpr [ collectionPathExpr ]\r\n";
        str += "                   / \"/\" anyExpr\r\n";
        str += "                   / \"/\" allExpr\r\n";
        str += "                   / \"/\" boundFunctionExpr\r\n";
        str += "                   / \"/\" annotationExpr\r\n";
        str += " \r\n";
        str += "complexPathExpr = \"/\" directMemberExpr\r\n";
        str += "                / \"/\" optionallyQualifiedComplexTypeName [ \"/\" directMemberExpr ]\r\n";
        str += "\r\n";
        str += "primitivePathExpr = \"/\" [ annotationExpr / boundFunctionExpr ]\r\n";
        str += "\r\n";
        str += "boundFunctionExpr = functionExpr ; boundFunction segments can only be composed if the type of the    \r\n";
        str += "                                 ; previous segment matches the type of the first function parameter\r\n";
        str += "                                     \r\n";
        str += "functionExpr = [ namespace \".\" ]\r\n";
        str += "               ( entityColFunction    functionExprParameters [ collectionNavigationExpr ] \r\n";
        str += "               / entityFunction       functionExprParameters [ singleNavigationExpr ] \r\n";
        str += "               / complexColFunction   functionExprParameters [ complexColPathExpr ]\r\n";
        str += "               / complexFunction      functionExprParameters [ complexPathExpr ] \r\n";
        str += "               / primitiveColFunction functionExprParameters [ collectionPathExpr ] \r\n";
        str += "               / primitiveFunction    functionExprParameters [ primitivePathExpr ] \r\n";
        str += "               )\r\n";
        str += "\r\n";
        str += "functionExprParameters = OPEN [ functionExprParameter *( COMMA functionExprParameter ) ] CLOSE\r\n";
        str += "functionExprParameter  = parameterName EQ ( parameterAlias / parameterValue )\r\n";
        str += "\r\n";
        str += "anyExpr = \"any\" OPEN BWS [ lambdaVariableExpr BWS COLON BWS lambdaPredicateExpr ] BWS CLOSE\r\n";
        str += "allExpr = \"all\" OPEN BWS   lambdaVariableExpr BWS COLON BWS lambdaPredicateExpr   BWS CLOSE\r\n";
        str += "lambdaPredicateExpr = boolCommonExpr ; containing at least one lambdaVariableExpr\r\n";
        str += "\r\n";
        str += "methodCallExpr = indexOfMethodCallExpr \r\n";
        str += "               / toLowerMethodCallExpr \r\n";
        str += "               / toUpperMethodCallExpr  \r\n";
        str += "               / trimMethodCallExpr \r\n";
        str += "               / substringMethodCallExpr \r\n";
        str += "               / concatMethodCallExpr \r\n";
        str += "               / lengthMethodCallExpr \r\n";
        str += "               / matchesPatternMethodCallExpr\r\n";
        str += "               / yearMethodCallExpr \r\n";
        str += "               / monthMethodCallExpr \r\n";
        str += "               / dayMethodCallExpr \r\n";
        str += "               / hourMethodCallExpr \r\n";
        str += "               / minuteMethodCallExpr \r\n";
        str += "               / secondMethodCallExpr \r\n";
        str += "               / fractionalsecondsMethodCallExpr\r\n";
        str += "               / totalsecondsMethodCallExpr\r\n";
        str += "               / dateMethodCallExpr \r\n";
        str += "               / timeMethodCallExpr \r\n";
        str += "               / roundMethodCallExpr \r\n";
        str += "               / floorMethodCallExpr \r\n";
        str += "               / ceilingMethodCallExpr \r\n";
        str += "               / distanceMethodCallExpr \r\n";
        str += "               / geoLengthMethodCallExpr \r\n";
        str += "               / totalOffsetMinutesMethodCallExpr\r\n";
        str += "               / minDateTimeMethodCallExpr\r\n";
        str += "               / maxDateTimeMethodCallExpr\r\n";
        str += "               / nowMethodCallExpr\r\n";
        str += "               / caseMethodCallExpr\r\n";
        str += "               / boolMethodCallExpr\r\n";
        str += "\r\n";
        str += "boolMethodCallExpr = endsWithMethodCallExpr \r\n";
        str += "                   / startsWithMethodCallExpr \r\n";
        str += "                   / containsMethodCallExpr                                          \r\n";
        str += "                   / intersectsMethodCallExpr \r\n";
        str += "                   / hasSubsetMethodCallExpr\r\n";
        str += "                   / hasSubsequenceMethodCallExpr\r\n";
        str += "\r\n";
        str += "concatMethodCallExpr         = \"concat\"         OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "containsMethodCallExpr       = \"contains\"       OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "endsWithMethodCallExpr       = \"endswith\"       OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "indexOfMethodCallExpr        = \"indexof\"        OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "lengthMethodCallExpr         = \"length\"         OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "matchesPatternMethodCallExpr = \"matchesPattern\" OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "startsWithMethodCallExpr     = \"startswith\"     OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "substringMethodCallExpr      = \"substring\"      OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS [ COMMA BWS commonExpr BWS ] CLOSE\r\n";
        str += "toLowerMethodCallExpr        = \"tolower\"        OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "toUpperMethodCallExpr        = \"toupper\"        OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "trimMethodCallExpr           = \"trim\"           OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "\r\n";
        str += "yearMethodCallExpr               = \"year\"               OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "monthMethodCallExpr              = \"month\"              OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "dayMethodCallExpr                = \"day\"                OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "hourMethodCallExpr               = \"hour\"               OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "minuteMethodCallExpr             = \"minute\"             OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "secondMethodCallExpr             = \"second\"             OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "fractionalsecondsMethodCallExpr  = \"fractionalseconds\"  OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "totalsecondsMethodCallExpr       = \"totalseconds\"       OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "dateMethodCallExpr               = \"date\"               OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "timeMethodCallExpr               = \"time\"               OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "totalOffsetMinutesMethodCallExpr = \"totaloffsetminutes\" OPEN BWS commonExpr BWS CLOSE \r\n";
        str += "\r\n";
        str += "minDateTimeMethodCallExpr = \"mindatetime\" OPEN BWS CLOSE\r\n";
        str += "maxDateTimeMethodCallExpr = \"maxdatetime\" OPEN BWS CLOSE\r\n";
        str += "nowMethodCallExpr         = \"now\"         OPEN BWS CLOSE\r\n";
        str += "\r\n";
        str += "roundMethodCallExpr   = \"round\"   OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "floorMethodCallExpr   = \"floor\"   OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "ceilingMethodCallExpr = \"ceiling\" OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "\r\n";
        str += "distanceMethodCallExpr   = \"geo.distance\"   OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "geoLengthMethodCallExpr  = \"geo.length\"     OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "intersectsMethodCallExpr = \"geo.intersects\" OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "\r\n";
        str += "hasSubsetMethodCallExpr      = \"hassubset\"      OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "hasSubsequenceMethodCallExpr = \"hassubsequence\" OPEN BWS commonExpr BWS COMMA BWS commonExpr BWS CLOSE\r\n";
        str += "\r\n";
        str += "caseMethodCallExpr = \"case\" OPEN BWS boolCommonExpr BWS COLON BWS commonExpr BWS \r\n";
        str += "                        *( COMMA BWS boolCommonExpr BWS COLON BWS commonExpr BWS ) CLOSE\r\n";
        str += "\r\n";
        str += "parenExpr = OPEN BWS commonExpr BWS CLOSE\r\n";
        str += "listExpr  = OPEN BWS primitiveLiteral BWS *( COMMA BWS primitiveLiteral BWS ) CLOSE\r\n";
        str += "\r\n";
        str += "andExpr = RWS \"and\" RWS boolCommonExpr\r\n";
        str += "orExpr  = RWS \"or\"  RWS boolCommonExpr\r\n";
        str += "\r\n";
        str += "eqExpr = RWS \"eq\" RWS commonExpr     \r\n";
        str += "neExpr = RWS \"ne\" RWS commonExpr\r\n";
        str += "ltExpr = RWS \"lt\" RWS commonExpr\r\n";
        str += "leExpr = RWS \"le\" RWS commonExpr\r\n";
        str += "gtExpr = RWS \"gt\" RWS commonExpr\r\n";
        str += "geExpr = RWS \"ge\" RWS commonExpr\r\n";
        str += "inExpr = RWS \"in\" RWS ( listExpr / commonExpr )\r\n";
        str += "\r\n";
        str += "hasExpr = RWS \"has\" RWS enum\r\n";
        str += "\r\n";
        str += "addExpr   = RWS \"add\"   RWS commonExpr\r\n";
        str += "subExpr   = RWS \"sub\"   RWS commonExpr\r\n";
        str += "mulExpr   = RWS \"mul\"   RWS commonExpr\r\n";
        str += "divExpr   = RWS \"div\"   RWS commonExpr\r\n";
        str += "divbyExpr = RWS \"divby\" RWS commonExpr\r\n";
        str += "modExpr   = RWS \"mod\"   RWS commonExpr\r\n";
        str += "\r\n";
        str += "negateExpr = \"-\" BWS commonExpr\r\n";
        str += "\r\n";
        str += "notExpr = \"not\" RWS boolCommonExpr\r\n";
        str += "\r\n";
        str += "isofExpr = \"isof\" OPEN BWS [ commonExpr BWS COMMA BWS ] optionallyQualifiedTypeName BWS CLOSE\r\n";
        str += "castExpr = \"cast\" OPEN BWS [ commonExpr BWS COMMA BWS ] optionallyQualifiedTypeName BWS CLOSE\r\n";
        str += "\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 5. JSON format for queries\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; Note: the query part of a URI needs to be percent-encoding normalized before\r\n";
        str += "; applying these rules, see comment at the top of this file\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "arrayOrObject = array\r\n";
        str += "              / object\r\n";
        str += "\r\n";
        str += "array = begin-array \r\n";
        str += "        [ valueInUrl *( value-separator valueInUrl ) ] \r\n";
        str += "        end-array\r\n";
        str += "\r\n";
        str += "object = begin-object\r\n";
        str += "         [ member *( value-separator member ) ]\r\n";
        str += "         end-object\r\n";
        str += "\r\n";
        str += "member = stringInUrl name-separator valueInUrl\r\n";
        str += "\r\n";
        str += "valueInUrl = stringInUrl\r\n";
        str += "           / commonExpr            \r\n";
        str += "\r\n";
        str += "; JSON syntax: adapted to URI restrictions from [RFC8259]                 \r\n";
        str += "begin-object = BWS ( \"{\" / \"%7B\" ) BWS\r\n";
        str += "end-object   = BWS ( \"}\" / \"%7D\" )\r\n";
        str += "\r\n";
        str += "begin-array = BWS ( \"[\" / \"%5B\" ) BWS \r\n";
        str += "end-array   = BWS ( \"]\" / \"%5D\" )\r\n";
        str += "\r\n";
        str += "quotation-mark  = DQUOTE / \"%22\"\r\n";
        str += "name-separator  = BWS COLON BWS\r\n";
        str += "value-separator = BWS COMMA BWS\r\n";
        str += "\r\n";
        str += "stringInUrl = quotation-mark *charInJSON quotation-mark\r\n";
        str += "\r\n";
        str += "charInJSON   = qchar-unescaped  \r\n";
        str += "             / qchar-JSON-special    \r\n";
        str += "             / escape ( quotation-mark \r\n";
        str += "                      / escape\r\n";
        str += "                      / ( \"/\" / \"%2F\" ) ; solidus         U+002F - literal form is allowed in the query part of a URL\r\n";
        str += "                      / %s\"b\"             ; backspace       U+0008                \r\n";
        str += "                      / %s\"f\"             ; form feed       U+000C\r\n";
        str += "                      / %s\"n\"             ; line feed       U+000A\r\n";
        str += "                      / %s\"r\"             ; carriage return U+000D\r\n";
        str += "                      / %s\"t\"             ; tab             U+0009\r\n";
        str += "                      / %s\"u\" 4HEXDIG     ;                 U+XXXX\r\n";
        str += "                      )\r\n";
        str += "\r\n";
        str += "qchar-JSON-special = SP / \":\" / \"{\" / \"}\" / \"[\" / \"]\" ; some agents put these unencoded into the query part of a URL\r\n";
        str += "\r\n";
        str += "escape = \"\\\" / \"%5C\"     ; reverse solidus U+005C\r\n";
        str += "\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 6. Names and identifiers\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "qualifiedTypeName = singleQualifiedTypeName                  \r\n";
        str += "                  / %s\"Collection\" OPEN singleQualifiedTypeName CLOSE\r\n";
        str += "\r\n";
        str += "optionallyQualifiedTypeName = singleQualifiedTypeName                  \r\n";
        str += "                            / %s\"Collection\" OPEN singleQualifiedTypeName CLOSE\r\n";
        str += "                            / singleTypeName\r\n";
        str += "                            / %s\"Collection\" OPEN singleTypeName CLOSE\r\n";
        str += "\r\n";
        str += "singleQualifiedTypeName = qualifiedEntityTypeName \r\n";
        str += "                        / qualifiedComplexTypeName\r\n";
        str += "                        / qualifiedTypeDefinitionName\r\n";
        str += "                        / qualifiedEnumTypeName\r\n";
        str += "                        / primitiveTypeName \r\n";
        str += "                        \r\n";
        str += "singleTypeName = entityTypeName \r\n";
        str += "               / complexTypeName \r\n";
        str += "               / typeDefinitionName \r\n";
        str += "               / enumerationTypeName                         \r\n";
        str += "                  \r\n";
        str += "qualifiedEntityTypeName     = namespace \".\" entityTypeName\r\n";
        str += "qualifiedComplexTypeName    = namespace \".\" complexTypeName\r\n";
        str += "qualifiedTypeDefinitionName = namespace \".\" typeDefinitionName \r\n";
        str += "qualifiedEnumTypeName       = namespace \".\" enumerationTypeName\r\n";
        str += "\r\n";
        str += "optionallyQualifiedEntityTypeName     = [ namespace \".\" ] entityTypeName\r\n";
        str += "optionallyQualifiedComplexTypeName    = [ namespace \".\" ] complexTypeName\r\n";
        str += "\r\n";
        str += "; an alias is just a single-part namespace\r\n";
        str += "namespace     = namespacePart *( \".\" namespacePart )\r\n";
        str += "namespacePart = odataIdentifier\r\n";
        str += "\r\n";
        str += "entitySetName       = odataIdentifier\r\n";
        str += "singletonEntity     = odataIdentifier          \r\n";
        str += "entityTypeName      = odataIdentifier\r\n";
        str += "complexTypeName     = odataIdentifier\r\n";
        str += "typeDefinitionName  = odataIdentifier \r\n";
        str += "enumerationTypeName = odataIdentifier\r\n";
        str += "enumerationMember   = odataIdentifier\r\n";
        str += "termName            = odataIdentifier\r\n";
        str += "\r\n";
        str += "; Note: this pattern is overly restrictive, the normative definition is type TSimpleIdentifier in OData EDM XML Schema\r\n";
        str += "odataIdentifier             = identifierLeadingCharacter *127identifierCharacter\r\n";
        str += "identifierLeadingCharacter  = ALPHA / \"_\"         ; plus Unicode characters from the categories L or Nl\r\n";
        str += "identifierCharacter         = ALPHA / \"_\" / DIGIT ; plus Unicode characters from the categories L, Nl, Nd, Mn, Mc, Pc, or Cf\r\n";
        str += "\r\n";
        str += "primitiveTypeName = %s\"Edm.\" ( %s\"Binary\"\r\n";
        str += "                           / %s\"Boolean\"\r\n";
        str += "                           / %s\"Byte\"\r\n";
        str += "                           / %s\"Date\" \r\n";
        str += "                           / %s\"DateTimeOffset\"\r\n";
        str += "                           / %s\"Decimal\"\r\n";
        str += "                           / %s\"Double\"\r\n";
        str += "                           / %s\"Duration\" \r\n";
        str += "                           / %s\"Guid\" \r\n";
        str += "                           / %s\"Int16\"\r\n";
        str += "                           / %s\"Int32\"\r\n";
        str += "                           / %s\"Int64\"\r\n";
        str += "                           / %s\"SByte\"\r\n";
        str += "                           / %s\"Single\"\r\n";
        str += "                           / %s\"Stream\"\r\n";
        str += "                           / %s\"String\"\r\n";
        str += "                           / %s\"TimeOfDay\"\r\n";
        str += "                           / abstractSpatialTypeName [ concreteSpatialTypeName ] \r\n";
        str += "                           )\r\n";
        str += "abstractSpatialTypeName = %s\"Geography\"\r\n";
        str += "                        / %s\"Geometry\"\r\n";
        str += "concreteSpatialTypeName = %s\"Collection\"\r\n";
        str += "                        / %s\"LineString\"\r\n";
        str += "                        / %s\"MultiLineString\"\r\n";
        str += "                        / %s\"MultiPoint\"\r\n";
        str += "                        / %s\"MultiPolygon\"\r\n";
        str += "                        / %s\"Point\"\r\n";
        str += "                        / %s\"Polygon\"\r\n";
        str += "\r\n";
        str += "primitiveProperty       = primitiveKeyProperty / primitiveNonKeyProperty\r\n";
        str += "primitiveKeyProperty    = odataIdentifier\r\n";
        str += "primitiveNonKeyProperty = odataIdentifier\r\n";
        str += "primitiveColProperty    = odataIdentifier\r\n";
        str += "complexProperty         = odataIdentifier\r\n";
        str += "complexColProperty      = odataIdentifier\r\n";
        str += "streamProperty          = odataIdentifier\r\n";
        str += "\r\n";
        str += "navigationProperty          = entityNavigationProperty / entityColNavigationProperty  \r\n";
        str += "entityNavigationProperty    = odataIdentifier\r\n";
        str += "entityColNavigationProperty = odataIdentifier\r\n";
        str += "\r\n";
        str += "action       = odataIdentifier\r\n";
        str += "actionImport = odataIdentifier\r\n";
        str += "\r\n";
        str += "function = entityFunction \r\n";
        str += "         / entityColFunction \r\n";
        str += "         / complexFunction \r\n";
        str += "         / complexColFunction \r\n";
        str += "         / primitiveFunction \r\n";
        str += "         / primitiveColFunction\r\n";
        str += "         \r\n";
        str += "entityFunction       = odataIdentifier\r\n";
        str += "entityColFunction    = odataIdentifier\r\n";
        str += "complexFunction      = odataIdentifier\r\n";
        str += "complexColFunction   = odataIdentifier\r\n";
        str += "primitiveFunction    = odataIdentifier\r\n";
        str += "primitiveColFunction = odataIdentifier\r\n";
        str += "\r\n";
        str += "entityFunctionImport       = odataIdentifier\r\n";
        str += "entityColFunctionImport    = odataIdentifier\r\n";
        str += "complexFunctionImport      = odataIdentifier\r\n";
        str += "complexColFunctionImport   = odataIdentifier\r\n";
        str += "primitiveFunctionImport    = odataIdentifier\r\n";
        str += "primitiveColFunctionImport = odataIdentifier\r\n";
        str += "\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 7. Literal Data Values\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "; in URLs\r\n";
        str += "primitiveLiteral = nullValue                  ; plain values up to int64Value\r\n";
        str += "                 / booleanValue \r\n";
        str += "                 / guidValue \r\n";
        str += "                 / dateTimeOffsetValueInUrl \r\n";
        str += "                 / dateValue\r\n";
        str += "                 / timeOfDayValueInUrl\r\n";
        str += "                 / decimalValue \r\n";
        str += "                 / doubleValue \r\n";
        str += "                 / singleValue \r\n";
        str += "                 / sbyteValue \r\n";
        str += "                 / byteValue\r\n";
        str += "                 / int16Value \r\n";
        str += "                 / int32Value \r\n";
        str += "                 / int64Value \r\n";
        str += "                 / string                     ; single-quoted\r\n";
        str += "                 / duration\r\n";
        str += "                 / enum\r\n";
        str += "                 / binary                     ; all others are quoted and prefixed \r\n";
        str += "                 / geographyCollection \r\n";
        str += "                 / geographyLineString \r\n";
        str += "                 / geographyMultiLineString \r\n";
        str += "                 / geographyMultiPoint \r\n";
        str += "                 / geographyMultiPolygon \r\n";
        str += "                 / geographyPoint \r\n";
        str += "                 / geographyPolygon \r\n";
        str += "                 / geometryCollection \r\n";
        str += "                 / geometryLineString \r\n";
        str += "                 / geometryMultiLineString \r\n";
        str += "                 / geometryMultiPoint \r\n";
        str += "                 / geometryMultiPolygon \r\n";
        str += "                 / geometryPoint \r\n";
        str += "                 / geometryPolygon\r\n";
        str += "         \r\n";
        str += "; in Atom and JSON message bodies and CSDL DefaultValue attributes                 \r\n";
        str += "primitiveValue = booleanValue\r\n";
        str += "               / guidValue\r\n";
        str += "               / durationValue\r\n";
        str += "               / dateTimeOffsetValue \r\n";
        str += "               / dateValue\r\n";
        str += "               / timeOfDayValue\r\n";
        str += "               / enumValue\r\n";
        str += "               / fullCollectionLiteral\r\n";
        str += "               / fullLineStringLiteral\r\n";
        str += "               / fullMultiPointLiteral\r\n";
        str += "               / fullMultiLineStringLiteral\r\n";
        str += "               / fullMultiPolygonLiteral\r\n";
        str += "               / fullPointLiteral\r\n";
        str += "               / fullPolygonLiteral\r\n";
        str += "               / decimalValue \r\n";
        str += "               / doubleValue \r\n";
        str += "               / singleValue \r\n";
        str += "               / sbyteValue \r\n";
        str += "               / byteValue\r\n";
        str += "               / int16Value \r\n";
        str += "               / int32Value \r\n";
        str += "               / int64Value \r\n";
        str += "               / binaryValue \r\n";
        str += "               ; also valid are:\r\n";
        str += "               ; - any XML string for strings in Atom and CSDL documents\r\n";
        str += "               ; - any JSON string for JSON documents \r\n";
        str += "\r\n";
        str += "nullValue = %s\"null\" \r\n";
        str += "\r\n";
        str += "; base64url encoding according to http://tools.ietf.org/html/rfc4648#section-5                                             \r\n";
        str += "binary      = \"binary\" SQUOTE binaryValue SQUOTE\r\n";
        str += "binaryValue = *(4base64char) [ base64b16  / base64b8 ]\r\n";
        str += "base64b16   = 2base64char ( %s\"A\" / %s\"E\" / %s\"I\" / %s\"M\" / %s\"Q\" / %s\"U\" / %s\"Y\" / %s\"c\" / %s\"g\" / %s\"k\" / %s\"o\" / %s\"s\" / %s\"w\" / %s\"0\" / %s\"4\" / %s\"8\" )   [ \"=\" ]\r\n";
        str += "base64b8    = base64char ( %s\"A\" / %s\"Q\" / %s\"g\" / %s\"w\" ) [ \"==\" ]\r\n";
        str += "base64char  = ALPHA / DIGIT / \"-\" / \"_\"\r\n";
        str += "\r\n";
        str += "booleanValue = \"true\" / \"false\"\r\n";
        str += "\r\n";
        str += "decimalValue = [ SIGN ] 1*DIGIT [ \".\" 1*DIGIT ] [ \"e\" [ SIGN ] 1*DIGIT ] / nanInfinity\r\n";
        str += "doubleValue  = decimalValue ; IEEE 754 binary64 floating-point number (15-17 decimal digits)\r\n";
        str += "singleValue  = decimalValue ; IEEE 754 binary32 floating-point number (6-9 decimal digits)\r\n";
        str += "nanInfinity  = %s\"NaN\" / %s\"-INF\" / %s\"INF\"\r\n";
        str += "\r\n";
        str += "guidValue = 8HEXDIG \"-\" 4HEXDIG \"-\" 4HEXDIG \"-\" 4HEXDIG \"-\" 12HEXDIG \r\n";
        str += "\r\n";
        str += "byteValue  = 1*3DIGIT           ; numbers in the range from 0 to 255\r\n";
        str += "sbyteValue = [ SIGN ] 1*3DIGIT  ; numbers in the range from -128 to 127\r\n";
        str += "int16Value = [ SIGN ] 1*5DIGIT  ; numbers in the range from -32768 to 32767        \r\n";
        str += "int32Value = [ SIGN ] 1*10DIGIT ; numbers in the range from -2147483648 to 2147483647\r\n";
        str += "int64Value = [ SIGN ] 1*19DIGIT ; numbers in the range from -9223372036854775808 to 9223372036854775807\r\n";
        str += "\r\n";
        str += "string           = SQUOTE *( SQUOTE-in-string / pchar-no-SQUOTE ) SQUOTE\r\n";
        str += "SQUOTE-in-string = SQUOTE SQUOTE ; two consecutive single quotes represent one within a string literal\r\n";
        str += "\r\n";
        str += "dateValue = year \"-\" month \"-\" day\r\n";
        str += "\r\n";
        str += "dateTimeOffsetValue      = year \"-\" month \"-\" day \"T\" timeOfDayValue      ( \"Z\" / SIGN hour \":\"   minute )\r\n";
        str += "dateTimeOffsetValueInUrl = year \"-\" month \"-\" day \"T\" timeOfDayValueInUrl ( \"Z\" / SIGN hour COLON minute )\r\n";
        str += "\r\n";
        str += "duration      = [ \"duration\" ] SQUOTE durationValue SQUOTE\r\n";
        str += "durationValue = [ SIGN ] \"P\" [ 1*DIGIT \"D\" ] [ \"T\" [ 1*DIGIT \"H\" ] [ 1*DIGIT \"M\" ] [ 1*DIGIT [ \".\" 1*DIGIT ] \"S\" ] ]\r\n";
        str += "     ; the above is an approximation of the rules for an xml dayTimeDuration.\r\n";
        str += "     ; see the lexical representation for dayTimeDuration in http://www.w3.org/TR/xmlschema11-2#dayTimeDuration for more information\r\n";
        str += "\r\n";
        str += "timeOfDayValue      = hour \":\"   minute [ \":\"   second [ \".\" fractionalSeconds ] ]\r\n";
        str += "timeOfDayValueInUrl = hour COLON minute [ COLON second [ \".\" fractionalSeconds ] ]\r\n";
        str += " \r\n";
        str += "oneToNine       = \"1\" / \"2\" / \"3\" / \"4\" / \"5\" / \"6\" / \"7\" / \"8\" / \"9\" \r\n";
        str += "zeroToFiftyNine = ( \"0\" / \"1\" / \"2\" / \"3\" / \"4\" / \"5\" ) DIGIT\r\n";
        str += "year  = [ \"-\" ] ( \"0\" 3DIGIT / oneToNine 3*DIGIT )\r\n";
        str += "month = \"0\" oneToNine\r\n";
        str += "      / \"1\" ( \"0\" / \"1\" / \"2\" )\r\n";
        str += "day   = \"0\" oneToNine\r\n";
        str += "      / ( \"1\" / \"2\" ) DIGIT\r\n";
        str += "      / \"3\" ( \"0\" / \"1\" )\r\n";
        str += "hour   = ( \"0\" / \"1\" ) DIGIT\r\n";
        str += "       / \"2\" ( \"0\" / \"1\" / \"2\" / \"3\" ) \r\n";
        str += "minute = zeroToFiftyNine\r\n";
        str += "second = zeroToFiftyNine / \"60\" ; for leap seconds\r\n";
        str += "fractionalSeconds = 1*12DIGIT\r\n";
        str += "\r\n";
        str += "enum            = [ qualifiedEnumTypeName ] SQUOTE enumValue SQUOTE\r\n";
        str += "enumValue       = singleEnumValue *( COMMA singleEnumValue )\r\n";
        str += "singleEnumValue = enumerationMember / enumMemberValue\r\n";
        str += "enumMemberValue = int64Value\r\n";
        str += "\r\n";
        str += "geographyCollection   = geographyPrefix SQUOTE fullCollectionLiteral SQUOTE\r\n";
        str += "fullCollectionLiteral = sridLiteral collectionLiteral\r\n";
        str += "collectionLiteral     = \"Collection(\" geoLiteral *( COMMA geoLiteral ) CLOSE\r\n";
        str += "geoLiteral            = collectionLiteral\r\n";
        str += "                      / lineStringLiteral\r\n";
        str += "                      / multiPointLiteral\r\n";
        str += "                      / multiLineStringLiteral\r\n";
        str += "                      / multiPolygonLiteral\r\n";
        str += "                      / pointLiteral\r\n";
        str += "                      / polygonLiteral\r\n";
        str += "\r\n";
        str += "geographyLineString   = geographyPrefix SQUOTE fullLineStringLiteral SQUOTE\r\n";
        str += "fullLineStringLiteral = sridLiteral lineStringLiteral\r\n";
        str += "lineStringLiteral     = \"LineString\" lineStringData\r\n";
        str += "lineStringData        = OPEN positionLiteral 1*( COMMA positionLiteral ) CLOSE\r\n";
        str += "\r\n";
        str += "geographyMultiLineString   = geographyPrefix SQUOTE fullMultiLineStringLiteral SQUOTE\r\n";
        str += "fullMultiLineStringLiteral = sridLiteral multiLineStringLiteral\r\n";
        str += "multiLineStringLiteral     = \"MultiLineString(\" [ lineStringData *( COMMA lineStringData ) ] CLOSE\r\n";
        str += "\r\n";
        str += "geographyMultiPoint   = geographyPrefix SQUOTE fullMultiPointLiteral SQUOTE\r\n";
        str += "fullMultiPointLiteral = sridLiteral multiPointLiteral\r\n";
        str += "multiPointLiteral     = \"MultiPoint(\" [ pointData *( COMMA pointData ) ] CLOSE\r\n";
        str += "\r\n";
        str += "geographyMultiPolygon   = geographyPrefix SQUOTE fullMultiPolygonLiteral SQUOTE\r\n";
        str += "fullMultiPolygonLiteral = sridLiteral multiPolygonLiteral\r\n";
        str += "multiPolygonLiteral     = \"MultiPolygon(\" [ polygonData *( COMMA polygonData ) ] CLOSE\r\n";
        str += "\r\n";
        str += "geographyPoint   = geographyPrefix SQUOTE fullPointLiteral SQUOTE\r\n";
        str += "fullPointLiteral = sridLiteral pointLiteral\r\n";
        str += "sridLiteral      = \"SRID\" EQ 1*5DIGIT SEMI\r\n";
        str += "pointLiteral     =\"Point\" pointData\r\n";
        str += "pointData        = OPEN positionLiteral CLOSE\r\n";
        str += "positionLiteral  = doubleValue SP doubleValue [ SP doubleValue ] [ SP doubleValue ] ; longitude, latitude, altitude/elevation (optional), linear referencing measure (optional)\r\n";
        str += "\r\n";
        str += "geographyPolygon   = geographyPrefix SQUOTE fullPolygonLiteral SQUOTE\r\n";
        str += "fullPolygonLiteral = sridLiteral polygonLiteral\r\n";
        str += "polygonLiteral     = \"Polygon\" polygonData\r\n";
        str += "polygonData        = OPEN ringLiteral *( COMMA ringLiteral ) CLOSE\r\n";
        str += "ringLiteral        = OPEN positionLiteral *( COMMA positionLiteral ) CLOSE\r\n";
        str += "                   ; Within each ringLiteral, the first and last positionLiteral elements MUST be an exact syntactic match to each other.\r\n";
        str += "                   ; Within the polygonData, the ringLiterals MUST specify their points in appropriate winding order. \r\n";
        str += "                   ; In order of traversal, points to the left side of the ring are interpreted as being in the polygon.\r\n";
        str += "\r\n";
        str += "geometryCollection      = geometryPrefix SQUOTE fullCollectionLiteral      SQUOTE\r\n";
        str += "geometryLineString      = geometryPrefix SQUOTE fullLineStringLiteral      SQUOTE\r\n";
        str += "geometryMultiLineString = geometryPrefix SQUOTE fullMultiLineStringLiteral SQUOTE\r\n";
        str += "geometryMultiPoint      = geometryPrefix SQUOTE fullMultiPointLiteral      SQUOTE\r\n";
        str += "geometryMultiPolygon    = geometryPrefix SQUOTE fullMultiPolygonLiteral    SQUOTE\r\n";
        str += "geometryPoint           = geometryPrefix SQUOTE fullPointLiteral           SQUOTE\r\n";
        str += "geometryPolygon         = geometryPrefix SQUOTE fullPolygonLiteral         SQUOTE\r\n";
        str += "\r\n";
        str += "geographyPrefix = \"geography\"\r\n";
        str += "geometryPrefix  = \"geometry\" \r\n";
        str += "\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 8. Header values\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "header = content-id\r\n";
        str += "       / isolation\r\n";
        str += "       / odata-entityid \r\n";
        str += "       / odata-error\r\n";
        str += "       / odata-maxversion\r\n";
        str += "       / odata-version\r\n";
        str += "       / prefer\r\n";
        str += "\r\n";
        str += "content-id = \"Content-ID\" \":\" OWS request-id\r\n";
        str += "isolation  = [ \"OData-\" ] \"Isolation\" \":\" OWS \"snapshot\"\r\n";
        str += "request-id = 1*unreserved\r\n";
        str += "       \r\n";
        str += "odata-entityid   = \"OData-EntityID\"   \":\" OWS IRI-in-header\r\n";
        str += "\r\n";
        str += "; Note: the header value is a JSON object restricted to characters allowed in a header\r\n";
        str += "odata-error      = \"OData-Error\"      \":\" OWS \"{\" DQUOTE %s\"code\" DQUOTE \":\" *( VCHAR / SP )\r\n";
        str += "\r\n";
        str += "odata-maxversion = \"OData-MaxVersion\" \":\" OWS 1*DIGIT \".\" 1*DIGIT     \r\n";
        str += "odata-version    = \"OData-Version\"    \":\" OWS \"4.0\" [ oneToNine ]\r\n";
        str += "      \r\n";
        str += "prefer     = \"Prefer\" \":\" OWS preference *( OWS \",\" OWS preference )       \r\n";
        str += "preference = allowEntityReferencesPreference\r\n";
        str += "           / callbackPreference\r\n";
        str += "           / continueOnErrorPreference\r\n";
        str += "           / includeAnnotationsPreference\r\n";
        str += "           / maxpagesizePreference\r\n";
        str += "           / omitValuesPreference\r\n";
        str += "           / respondAsyncPreference\r\n";
        str += "           / returnPreference\r\n";
        str += "           / trackChangesPreference\r\n";
        str += "           / waitPreference\r\n";
        str += "           ; and everything allowed by https://tools.ietf.org/html/rfc7240\r\n";
        str += "           ; / ( parameter / token ) *( OWS \";\" [ OWS ( parameter / token ) ] )\r\n";
        str += "           \r\n";
        str += "allowEntityReferencesPreference = [ \"odata.\" ] \"allow-entityreferences\"\r\n";
        str += "\r\n";
        str += "callbackPreference = [ \"odata.\" ] \"callback\" OWS \";\" OWS \"url\" EQ-h DQUOTE URI DQUOTE\r\n";
        str += "\r\n";
        str += "continueOnErrorPreference = [ \"odata.\" ] \"continue-on-error\" [ EQ-h booleanValue ]   \r\n";
        str += "           \r\n";
        str += "includeAnnotationsPreference = [ \"odata.\" ] \"include-annotations\" EQ-h DQUOTE annotationsList DQUOTE\r\n";
        str += "annotationsList      = annotationIdentifier *(\",\" annotationIdentifier)\r\n";
        str += "annotationIdentifier = [ excludeOperator ]\r\n";
        str += "                       ( STAR \r\n";
        str += "                       / namespace \".\" ( termName / STAR ) \r\n";
        str += "                       ) \r\n";
        str += "                       [ \"#\" odataIdentifier ]\r\n";
        str += "excludeOperator      = \"-\"\r\n";
        str += "           \r\n";
        str += "maxpagesizePreference = [ \"odata.\" ] \"maxpagesize\" EQ-h oneToNine *DIGIT   \r\n";
        str += "\r\n";
        str += "omitValuesPreference = \"omit-values\" EQ-h ( \"nulls\" / \"defaults\" )      \r\n";
        str += "\r\n";
        str += "respondAsyncPreference = \"respond-async\"\r\n";
        str += "\r\n";
        str += "returnPreference = \"return\" EQ-h ( %s\"representation\" / %s\"minimal\" )\r\n";
        str += "\r\n";
        str += "trackChangesPreference = [ \"odata.\" ] \"track-changes\"\r\n";
        str += "\r\n";
        str += "waitPreference = \"wait\" EQ-h 1*DIGIT\r\n";
        str += "\r\n";
        str += ";parameter      = token \"=\" ( token / quoted-string )\r\n";
        str += ";token          = 1*tchar\r\n";
        str += ";tchar          = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\r\n";
        str += ";               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\r\n";
        str += ";               / DIGIT / ALPHA\r\n";
        str += ";quoted-string  = DQUOTE *( qdtext / quoted-pair ) DQUOTE\r\n";
        str += ";qdtext         = %x21 / %x23-5B / %x5D-7E / obs-text / OWS\r\n";
        str += "obs-text       = %x80-FF\r\n";
        str += ";quoted-pair    = \"\\\" ( HTAB / SP / VCHAR / obs-text )\r\n";
        str += "\r\n";
        str += "OWS   = *( SP / HTAB )  ; \"optional\" whitespace \r\n";
        str += "BWS-h = *( SP / HTAB )  ; \"bad\" whitespace in header values \r\n";
        str += "EQ-h  = BWS-h EQ BWS-h \r\n";
        str += "\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; 9. Punctuation\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "RWS = 1*( SP / HTAB / \"%20\" / \"%09\" )  ; \"required\" whitespace \r\n";
        str += "BWS =  *( SP / HTAB / \"%20\" / \"%09\" )  ; \"bad\" whitespace \r\n";
        str += "\r\n";
        str += "AT     = \"@\" / \"%40\"\r\n";
        str += "COLON  = \":\" / \"%3A\"\r\n";
        str += "COMMA  = \",\" / \"%2C\"\r\n";
        str += "EQ     = \"=\"\r\n";
        str += "HASH   = \"%23\" ; the # character is not allowed in the query part\r\n";
        str += "SIGN   = \"+\" / \"%2B\" / \"-\"\r\n";
        str += "SEMI   = \";\" / \"%3B\"\r\n";
        str += "STAR   = \"*\" / \"%2A\"\r\n";
        str += "SQUOTE = \"'\" / \"%27\"\r\n";
        str += "\r\n";
        str += "OPEN  = \"(\" / \"%28\"\r\n";
        str += "CLOSE = \")\" / \"%29\"\r\n";
        str += "\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; A. URI syntax [RFC3986]\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "URI           = scheme \":\" hier-part [ \"?\" query ] [ \"#\" fragment ]\r\n";
        str += "hier-part     = \"//\" authority path-abempty\r\n";
        str += "              / path-absolute\r\n";
        str += "              / path-rootless\r\n";
        str += ";              / path-empty\r\n";
        str += ";URI-reference = URI / relative-ref\r\n";
        str += ";absolute-URI  = scheme \":\" hier-part [ \"?\" query ]\r\n";
        str += ";relative-ref  = relative-part [ \"?\" query ] [ \"#\" fragment ]\r\n";
        str += ";relative-part = \"//\" authority path-abempty\r\n";
        str += ";              / path-absolute\r\n";
        str += ";              / path-noscheme\r\n";
        str += ";              / path-empty\r\n";
        str += "scheme        = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\r\n";
        str += "authority     = [ userinfo \"@\" ] host [ \":\" port ]\r\n";
        str += "userinfo      = *( unreserved / pct-encoded / sub-delims / \":\" )\r\n";
        str += "host          = IP-literal / IPv4address / reg-name\r\n";
        str += "port          = *DIGIT\r\n";
        str += "IP-literal    = \"[\" ( IPv6address / IPvFuture  ) \"]\"\r\n";
        str += "IPvFuture     = \"v\" 1*HEXDIG \".\" 1*( unreserved / sub-delims / \":\" )\r\n";
        str += "IPv6address   =                            6( h16 \":\" ) ls32\r\n";
        str += "                 /                       \"::\" 5( h16 \":\" ) ls32\r\n";
        str += "                 / [               h16 ] \"::\" 4( h16 \":\" ) ls32\r\n";
        str += "                 / [ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\r\n";
        str += "                 / [ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\r\n";
        str += "                 / [ *3( h16 \":\" ) h16 ] \"::\"    h16 \":\"   ls32\r\n";
        str += "                 / [ *4( h16 \":\" ) h16 ] \"::\"              ls32\r\n";
        str += "                 / [ *5( h16 \":\" ) h16 ] \"::\"              h16\r\n";
        str += "                 / [ *6( h16 \":\" ) h16 ] \"::\"\r\n";
        str += "h16           = 1*4HEXDIG\r\n";
        str += "ls32          = ( h16 \":\" h16 ) / IPv4address\r\n";
        str += "IPv4address   = dec-octet \".\" dec-octet \".\" dec-octet \".\" dec-octet\r\n";
        str += "dec-octet     = \"1\" 2DIGIT            ; 100-199\r\n";
        str += "              / \"2\" %x30-34 DIGIT     ; 200-249\r\n";
        str += "              / \"25\" %x30-35          ; 250-255\r\n";
        str += "              / %x31-39 DIGIT         ; 10-99\r\n";
        str += "              / DIGIT                 ; 0-9\r\n";
        str += "reg-name      = *( unreserved / pct-encoded / sub-delims )\r\n";
        str += ";path          = path-abempty    ; begins with \"/\" or is empty\r\n";
        str += ";              / path-absolute   ; begins with \"/\" but not \"//\"\r\n";
        str += ";              / path-noscheme   ; begins with a non-colon segment\r\n";
        str += ";              / path-rootless   ; begins with a segment\r\n";
        str += ";              / path-empty      ; zero characters\r\n";
        str += "path-abempty  = *( \"/\" segment )\r\n";
        str += "path-absolute = \"/\" [ segment-nz *( \"/\" segment ) ]\r\n";
        str += ";path-noscheme = segment-nz-nc *( \"/\" segment )\r\n";
        str += "path-rootless = segment-nz *( \"/\" segment )\r\n";
        str += ";path-empty    = \"\"\r\n";
        str += "segment       = *pchar\r\n";
        str += "segment-nz    = 1*pchar\r\n";
        str += ";segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / \"@\" ) ; non-zero-length segment without any colon \":\"\r\n";
        str += "pchar         = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\r\n";
        str += "query         = *( pchar / \"/\" / \"?\" )\r\n";
        str += "fragment      = *( pchar / \"/\" / \"?\" )\r\n";
        str += "pct-encoded   = \"%\" HEXDIG HEXDIG\r\n";
        str += "unreserved    = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\r\n";
        str += ";reserved      = gen-delims / sub-delims\r\n";
        str += ";gen-delims    = \":\" / \"/\" / \"?\" / \"#\" / \"[\" / \"]\" / \"@\"\r\n";
        str += ";sub-delims    = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\" / \"*\" / \"+\" / \",\" / \";\" / \"=\"\r\n";
        str += "sub-delims     =       \"$\" / \"&\" / \"'\" /                                     \"=\" / other-delims\r\n";
        str += "other-delims   = \"!\" /                   \"(\" / \")\" / \"*\" / \"+\" / \",\" / \";\"\r\n";
        str += "\r\n";
        str += "pchar-no-SQUOTE       = unreserved / pct-encoded-no-SQUOTE / other-delims / \"$\" / \"&\" / \"=\" / \":\" / \"@\"\r\n";
        str += "pct-encoded-no-SQUOTE = \"%\" ( \"0\" / \"1\" /   \"3\" / \"4\" / \"5\" / \"6\" / \"8\" / \"9\" / A-to-F ) HEXDIG \r\n";
        str += "                      / \"%\" \"2\" ( \"0\" / \"1\" / \"2\" / \"3\" / \"4\" / \"5\" / \"6\" /   \"8\" / \"9\" / A-to-F )\r\n";
        str += "\r\n";
        str += "qchar-no-AMP              = unreserved / pct-encoded           / other-delims / \":\" / \"@\" / \"/\" / \"?\" / \"$\" / \"'\" / \"=\"\r\n";
        str += "qchar-no-AMP-EQ           = unreserved / pct-encoded           / other-delims / \":\" / \"@\" / \"/\" / \"?\" / \"$\" / \"'\"\r\n";
        str += "qchar-no-AMP-EQ-AT-DOLLAR = unreserved / pct-encoded           / other-delims / \":\" /       \"/\" / \"?\" /       \"'\"\r\n";
        str += "qchar-no-AMP-SQUOTE       = unreserved / pct-encoded           / other-delims / \":\" / \"@\" / \"/\" / \"?\" / \"$\" /       \"=\"\r\n";
        str += "qchar-no-AMP-DQUOTE       = unreserved / pct-encoded-no-DQUOTE / other-delims / \":\" / \"@\" / \"/\" / \"?\" / \"$\" / \"'\" / \"=\"\r\n";
        str += "\r\n";
        str += "qchar-unescaped       = unreserved / pct-encoded-unescaped / other-delims / \":\" / \"@\" / \"/\" / \"?\" / \"$\" / \"'\" / \"=\"\r\n";
        str += "pct-encoded-unescaped = \"%\" ( \"0\" / \"1\" /   \"3\" / \"4\" /   \"6\" / \"7\" / \"8\" / \"9\" / A-to-F ) HEXDIG \r\n";
        str += "                      / \"%\" \"2\" ( \"0\" / \"1\" /   \"3\" / \"4\" / \"5\" / \"6\" / \"7\" / \"8\" / \"9\" / A-to-F ) \r\n";
        str += "                      / \"%\" \"5\" ( DIGIT / \"A\" / \"B\" /   \"D\" / \"E\" / \"F\" )\r\n";
        str += "\r\n";
        str += "pct-encoded-no-DQUOTE = \"%\" ( \"0\" / \"1\" /   \"3\" / \"4\" / \"5\" / \"6\" / \"7\" / \"8\" / \"9\" / A-to-F ) HEXDIG \r\n";
        str += "                      / \"%\" \"2\" ( \"0\" / \"1\" /   \"3\" / \"4\" / \"5\" / \"6\" / \"7\" / \"8\" / \"9\" / A-to-F ) \r\n";
        str += "              \r\n";
        str += "                 \r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; B. IRI syntax [RFC3987]\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; Note: these are over-generous stubs, for the actual patterns refer to RFC3987\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "IRI-in-header = 1*( VCHAR / obs-text )\r\n";
        str += "IRI-in-query  = 1*qchar-no-AMP\r\n";
        str += "\r\n";
        str += "                      \r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; C. ABNF core definitions [RFC5234]\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        str += "ALPHA  = %x41-5A / %x61-7A \r\n";
        str += "DIGIT  = %x30-39 \r\n";
        str += "HEXDIG = DIGIT / A-to-F\r\n";
        str += "A-to-F = \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\" \r\n";
        str += "DQUOTE = %x22\r\n";
        str += "SP     = %x20 \r\n";
        str += "HTAB   = %x09 \r\n";
        str += ";WSP    = SP / HTAB \r\n";
        str += ";LWSP = *(WSP / CRLF WSP) \r\n";
        str += "VCHAR = %x21-7E \r\n";
        str += ";CHAR = %x01-7F\r\n";
        str += ";LOCTET = %x00-FF \r\n";
        str += ";CR     = %x0D \r\n";
        str += ";LF     = %x0A \r\n";
        str += ";CRLF   = CR LF\r\n";
        str += ";BIT = \"0\" / \"1\" \r\n";
        str += "\r\n";
        str += "\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "; End of odata-abnf-construction-rules\r\n";
        str += ";------------------------------------------------------------------------------\r\n";
        str += "\r\n";
        return str;
      }
    }